引用标识符可以提高安全性吗?

时间:2016-06-18 11:25:52

标签: sql security

我知道在MySQL中我们可以使用反向标记符号来引用标识符,而在Oracle(以及遵循标准的其他RDBMS)中,我们可以在表名和字段名称周围使用双引号。我想知道它是否以某种方式提高了安全性,我们是否应该在现实世界的应用程序中与传统方法(如编写sql语句)并行使用此技术?

1 个答案:

答案 0 :(得分:2)

  

我想知道它是否以某种方式提高了安全性

如果您正在接受列或表名的用户输入并将它们放入查询中,那么您需要对它们进行正确编码以避免SQL注入。具体来说,用双引号将它们包装起来,并用doubled-double-quote替换名称中的任何双引号字符。 (在MySQL中,反引号和双重反引号,或设置ANSI_QUOTES配置以使其使用标准双引号。)

从用户输入接受任意模式名称是非常不寻常的,但很少有好主意。通常在允许标识特定列的位置(例如,对于sort=something参数),最好只允许已知良好列的白名单。

当您只编写固定查询时,没有特别的安全需要引用模式名称,尽管确保您的查询在面对具有不同保留字的不同DBMS时仍然可靠地工作可能是个好主意。