2009-12-26 55 views
12

在MySQL查询中,它对于表名反引号的重要性如何。它与安全有关吗?如果表格名称是基于用户输入在PHP中动态创建的,是否可以通过表格名称进行MySQL注入攻击?MySQL查询中表名反引号的重要性

回答

15

的反引号帮助您避免意外使用一个名称,在SQL例如保留字。拿一个名为“where”的表,它是我同意的表的一个愚蠢的名字,但是如果你用反引号包装它,它会正常工作。

+5

当你有一个名为'password'的字段时,会发生这种情况。 – 2009-12-26 11:25:53

+0

谢谢,我学到了一些新东西。我猜测用反引号标记名为“order”的列也可以避免与保留字冲突。 – eoinoc 2012-04-20 14:59:58

+0

我们是否也需要在PostgreSQL中使用它们? – 2013-12-27 03:09:14

3

如果您的表名与关键字名称相同,例如,选择,下面的查询将仍然工作:

select * from `select`; 
10

在MySQL的查询中,它有多重要的是围绕一个表名反引号。 是否与 安全有关系?

至于反引号而言,我使用它们时,有mysql的-specifcs名字和那些来自查询之间的名称冲突。

通过表名的MySQL注入攻击可能 如果表 名在PHP 基于用户输入动态创建的?

当有用户输入时,您需要确保过滤并验证来自用户的输入。所以是的,它存在安全风险。

我会建议你使用数字INTVALmysql_real_escape_string功能,你可以在你的查询中使用的任何变量。

+2

要添加到此答案... ANYTIME将变量放入SQL字符串中,这是SQL注入的机会。这些数据来自哪里并不重要,没有任何事情是真正安全的。总是逃避一切。 – TravisO 2009-12-27 03:56:38

+0

@TravisO:同意并感谢您的补充:) – Sarfraz 2010-02-16 14:34:14

+2

我最近学到的东西,mysql_real_escape_string()不会逃避反引号。如果你使用PHP变量作为表名,那么它可以被利用。 – Noodles 2014-08-04 23:58:57