我得到了$_GET
和用户能够将发送$_GET
字符串到MySQL,这么快的问题:
这是查询:
mysql_query("SELECT XX FROM ZZ WHERE YY %LIKE% " . htmlspecialchars($_get['string']) . ";");
够安全吗? 或者我要补充的东西不止htmlspecialchars()
是安全的?
预先感谢您的所有答复。
我得到了$_GET
和用户能够将发送$_GET
字符串到MySQL,这么快的问题:
这是查询:
mysql_query("SELECT XX FROM ZZ WHERE YY %LIKE% " . htmlspecialchars($_get['string']) . ";");
够安全吗? 或者我要补充的东西不止htmlspecialchars()
是安全的?
预先感谢您的所有答复。
不安全。
简单的示例数据,即使显示的htmlspecialchars做“这东西” -这只是错误的“东西”。
1;DROP TABLE all_your_precious_data--&
编码愉快。
解决方案:使用占位符按PDO或mysqli的(或使用mysql_real_escape_string
如果您想保留促进过时的做法......)
见最佳方式停止在PHP中的SQL注入和防止SQL注入与PHP和防止与刚刚和addslashes可以在SQL注入?
htmlspecialchars
无关与MySQL。 这是转义HTML特殊字符,当作为HTML evaultated有特殊含义的字符。 你写的不可信数据之前,浏览器,而不是数据库时,应该使用它。
您需要删除htmlspecialchars
完全,并使用mysql_real_escape_string
,或者更好的是, PDO 。
这也可能是不安全的,你最好使用mysql_real_escape_string。