我的网站有PHP命令:
mysql_query("SELECT * FROM users WHERE id=" . $_GET["id"]) or die(mysql_error());
当我输入网址
时http://example.com/index.php?id=1;%20UPDATE%20users%20SET%20password=123%20WHERE%20id=1
我收到以下错误:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'UPDATE users SET password=abc WHERE id=1' at line 1
但是在phpmyamin查询中执行成功。这有什么不对?为什么它不能在浏览器中执行?
答案 0 :(得分:7)
“mysql_query()
发送唯一查询(不支持多个查询)”
如果你想要允许这样的mysql注入,mysql_query将不喜欢它。如果不是,请mysql_real_escape_string($_GET["id"]);
阻止“注射”
答案 1 :(得分:4)
mysql_query()
不支持单个调用中的多个查询(您尝试注入):
SELECT * FROM users WHERE id=1;
UPDATE users SET password=abc WHERE id=1
因此“语法错误”。
现在去保护那个查询。