提问人:sql_newb 提问时间:9/28/2022 更新时间:9/29/2022 访问量:70
有关改进此 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
问:
给定一个表,然后是另一个包含翻译的“元数据”表。该函数查找翻译,然后生成别名语句。注射安全吗?
答:
0赞
Egret
9/29/2022
#1
这在几个方面都有SQL注入 - 它们是否可利用将取决于哪些信息可以通过信任边界传递(传递到不受信任的用户/程序)。
例如,在函数中,所有参数(语言 ID 除外)都可用于 SQL 注入。如果其中任何一个可能(或将来可能)来自不受信任的来源,那么这是易受攻击的。translate_column
同样,如果您的 OR 可以由不受信任的用户控制,则容易受到攻击。这包括允许将未经验证的数据插入到测试表中。alias_text
translated_column
f_get_table_with_alias
有两种方法可以安全地执行此操作 - 理想情况下,您应该同时使用这两种方法:
- 当您的用户创建用于表(或任何数据库对象)的名称时,您可能应该将名称限制为使用一组“安全”字符(字母数字和破折号、下划线......
- 您应该将表名/列名引号括起来 - 在对象周围添加双引号。如果这样做,则需要小心验证名称中没有引号,并错误地将引号转义出来或转义。您还需要注意,添加引号会使名称区分大小写。
评论