为什么';TyMySQL LRealOracle字符串认为这些字符是危险的吗? 我正在学习如何清理我的表单,知道使用PHP函数 MySQLYRealEnguleScript()/代码>有助于逃脱被认为是“危险”的字符,或者会破坏SQL的语法。我正在测试它,发现它不会转义字符序列,例如--或/**/。这些注释不是SQL中的吗?它们不能破坏语句的语法吗?如果mysql\u real\u escape\u string()没有涵盖并真正清理您的表单,您将如何传递这些和其他项目?mysql\u real\u escape\u string()将正确地转义数据,以反映当前安装的mysql及其可能具有或不具有的任何特殊字符。只需在查询之前运行所有数据,您就不必担心了

为什么';TyMySQL LRealOracle字符串认为这些字符是危险的吗? 我正在学习如何清理我的表单,知道使用PHP函数 MySQLYRealEnguleScript()/代码>有助于逃脱被认为是“危险”的字符,或者会破坏SQL的语法。我正在测试它,发现它不会转义字符序列,例如--或/**/。这些注释不是SQL中的吗?它们不能破坏语句的语法吗?如果mysql\u real\u escape\u string()没有涵盖并真正清理您的表单,您将如何传递这些和其他项目?mysql\u real\u escape\u string()将正确地转义数据,以反映当前安装的mysql及其可能具有或不具有的任何特殊字符。只需在查询之前运行所有数据,您就不必担心了,php,sql,sanitization,Php,Sql,Sanitization,例如,反斜杠(\)和单引号(“)用于构造查询(以及进一步的转义),但正斜杠不是。您提到的那些结构具有引用值之外的上下文,但当它们被引用(并正确转义)时,它们不会对查询产生不利影响。它们不会破坏SQL语句,因为它们不会破坏字符串,因此您的字符串保持完整,保护您免受任何恶意注入 但是,这并不意味着您不想从字符串中删除它们。从MySQL的角度来看,它们是安全的,但这取决于您的应用程序。始终用引号括住参数,您将是安全的。内部引号,--和/***/没有任何特殊含义。+1是。注释(--或/***/)在正确转

例如,反斜杠(
\
)和单引号(
)用于构造查询(以及进一步的转义),但正斜杠不是。您提到的那些结构具有引用值之外的上下文,但当它们被引用(并正确转义)时,它们不会对查询产生不利影响。

它们不会破坏SQL语句,因为它们不会破坏字符串,因此您的字符串保持完整,保护您免受任何恶意注入


但是,这并不意味着您不想从字符串中删除它们。从MySQL的角度来看,它们是安全的,但这取决于您的应用程序。

始终用引号括住参数,您将是安全的。内部引号,
--
/***/
没有任何特殊含义。

+1是。注释(
--
/***/
)在正确转义字符串中是安全的(这是
mysql\u real\u escape\u string()
的目的)。回答正确。还有,@Ben,看看那里:或者更好的是,开始使用参数化查询。事实上,这是几乎所有其他语言。该问题还包含许多示例,其中不使用参数化查询会导致易受攻击的脆弱代码。@pst:同意,但问题是关于mysql\u real\u escape\u字符串,而不是“如何使我的sql安全”@mcrumbley是真的——我只投了一张赞成票——但每当出现这种问题时,我都想揍某人;-)这假设特定于数据库的编码没有被更改——否则
mysql\u real\u escape\u string
就不会比
mysql\u escape\u string
好多少。(为什么人们仍然不使用参数化查询?
mysql\u real\u escape\u string
和朋友仍然作为临时选择加入解决方案被传递,这一事实令人不安。)