【发布时间】:2013-08-31 00:52:12
【问题描述】:
我有以下代码,很容易受到 SQL 注入(我认为?):
$IDquery = mysqli_query($connection, "SELECT `ID` FROM users WHERE username=$usernamelogin");
我没有转义$usernamelogin,这不是参数化查询。这显然需要解决,你不需要指出这一点,这不是这个问题的意义所在。在我修复它之前,我想确保我了解 SQL 注入是如何工作的。因此,我尝试创建一个名为“droptable”的表并将以下内容输入到用户名输入中:
x; DROP TABLE droptable;
我认为应该输入这个 SQL 查询:
SELECT `ID` FROM users WHERE username=x; DROP TABLE droptable;
但是,droptable 仍然存在,并且其中的行保持不变。谁能告诉我为什么?
【问题讨论】:
-
因为当您在测试后开始确保它的安全时,您使用 mysqli 就已经成功了一半。只需切换到准备好的陈述,你就很好了。 stackoverflow.com/questions/60174/…
标签: php sql sql-injection