我正在学习如何清理我的表单并知道使用PHP函数mysql_real_escape_string()
有助于转义被认为是“危险”的字符或会破坏SQL的语法。我正在测试它并注意到它没有转义--
或/* */
等字符序列。这些注释不是在SQL中,它们不能破坏语句的语法吗?您如何处理mysql_real_escape_string()
未覆盖的这些和其他项目并真正消毒您的表单?
答案 0 :(得分:5)
它们永远不会破坏SQL语句,因为它们永远不会突破字符串,因此您的字符串保持不变,保护您免受任何令人讨厌的注入。
这并不意味着你不想从字符串中删除它们。从MySQL的角度来看,它们是安全的,但根据您的应用程序可能并非如此。
答案 1 :(得分:3)
始终用引号括起参数,您将是安全的。引号内,--
和/* */
没有任何特殊含义。
答案 2 :(得分:0)
mysql_real_escape_string()
将正确转义数据以反映当前MySQL的安装以及它可能有或没有的任何特殊字符。只需在查询之前运行所有数据,您就不必担心。
例如,反斜杠(\
)和单引号('
)用于构造查询(并进一步转义),但正斜杠不是。您提到的那些结构的上下文超出了引用值,但是当它们被引用(并且正确转义)时,它们对查询没有任何负面影响。