是否用htmlspecialchars保护这个MySQL查询?(Does htmlspecialch

2019-10-29 19:34发布

我得到了$_GET和用户能够将发送$_GET字符串到MySQL,这么快的问题:

这是查询:

mysql_query("SELECT XX FROM ZZ WHERE YY %LIKE% " . htmlspecialchars($_get['string']) . ";");

够安全吗? 或者我要补充的东西不止htmlspecialchars()是安全的?

预先感谢您的所有答复。

Answer 1:

不安全。

简单的示例数据,即使显示的htmlspecialchars做“这东西” -这只是错误的“东西”。

1;DROP TABLE all_your_precious_data--&

编码愉快。


解决方案:使用占位符按PDO或mysqli的(或使用mysql_real_escape_string如果您想保留促进过时的做法......)

见最佳方式停止在PHP中的SQL注入和防止SQL注入与PHP和防止与刚刚和addslashes可以在SQL注入?



Answer 2:

htmlspecialchars 无关与MySQL。 这是转义HTML特殊字符,当作为HTML evaultated有特殊含义的字符。 你写的不可信数据之前,浏览器,而不是数据库时,应该使用它。

您需要删除htmlspecialchars完全,并使用mysql_real_escape_string ,或者更好的是, PDO 。



Answer 3:

这也可能是不安全的,你最好使用mysql_real_escape_string。



文章来源: Does htmlspecialchars protect this MySQL query?
标签: php mysql get