我得到了一个 $_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
如果您希望继续推广过时的做法...)
参见 Best way to stop SQL injection in PHP和 Prevent injection SQL with PHP和 Can SQL injection be prevented with just addslashes?
关于php - htmlspecialchars 是否保护此 MySQL 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7355639/