有关改进此 postgres 函数的任何提示,该函数创建别名,然后将其作为 json 返回。将列标题翻译成其他语言

Any tips on improving this postgres function that creates alias and then returns it as json. To translate column headers to different language

提问人:sql_newb 提问时间:9/28/2022 更新时间:9/29/2022 访问量:70

问:

给定一个表,然后是另一个包含翻译的“元数据”表。该函数查找翻译,然后生成别名语句。注射安全吗?

https://dbfiddle.uk/JQ6AnBVx

JSON PostgreSQL 函数 SQL 注入

评论

0赞 Adrian J. Moreno 9/29/2022
您的技术栈是什么?这应该由前端使用标准国际化 (i18n) 库进行处理。我觉得你正在重新发明轮子,让自己面对安全问题。您应该能够搜索“i18n”和您的编程语言,以查找有关在应用程序中管理多种语言的信息。

答:

0赞 Egret 9/29/2022 #1

这在几个方面都有SQL注入 - 它们是否可利用将取决于哪些信息可以通过信任边界传递(传递到不受信任的用户/程序)。

例如,在函数中,所有参数(语言 ID 除外)都可用于 SQL 注入。如果其中任何一个可能(或将来可能)来自不受信任的来源,那么这是易受攻击的。translate_column

同样,如果您的 OR 可以由不受信任的用户控制,则容易受到攻击。这包括允许将未经验证的数据插入到测试表中。alias_texttranslated_columnf_get_table_with_alias

有两种方法可以安全地执行此操作 - 理想情况下,您应该同时使用这两种方法:

  • 当您的用户创建用于表(或任何数据库对象)的名称时,您可能应该将名称限制为使用一组“安全”字符(字母数字和破折号、下划线......
  • 您应该将表名/列名引号括起来 - 在对象周围添加双引号。如果这样做,则需要小心验证名称中没有引号,并错误地将引号转义出来或转义。您还需要注意,添加引号会使名称区分大小写。