PHP的addslashes是否容易受到sql注入攻击?

k10*_*k10 6 php addslashes

可能重复:
mysql_real_escape_string()做了什么,addslashes()没有?

我一直在评论关于PHP的addslashes函数如何/为什么容易受到sql注入攻击的文章.我读过的所有内容都说特定的mysql编码类型存在问题(default-character-set = GBK),或者如果启用magic_quotes则存在问题.但是,在这种情况下,我无法摆脱addslashes()函数并执行恶意操作 - 例如以管理员身份登录.

    $user = addslashes($_POST['user']);
    $pass = sha1($_POST['pass']);
    $sql = "SELECT * FROM admins WHERE user = '".$user."' AND `pass` = '".$pass."'";

    $nums = mysql_num_rows(mysql_query($sql));

    if($nums==1){
    $_SESSION['admin_user'] = $user;
    $_SESSION['admin_pass'] = $pass;
Run Code Online (Sandbox Code Playgroud)

这是对客户的(次要)安全审核,我会建议他们使用PDO,但我需要显示他们当前的漏洞.

参考文献:

Pek*_*ica 3

Shiflett 在他的博客文章中展示了完整的可利用漏洞。您上面显示的代码似乎没有遵循该示例,因为它没有使用表现出漏洞的字符集。尽管如此,这个洞确实存在。

即使在特定情况下它恰好是安全的,使用的做法addslashes()仍然是危险的,Shiflett 的文章应该为您提供足够的材料来争论,即使利用所需的情况非常深奥,并且对于复制。

如果您的客户在没有看到其特定系统上的实时漏洞利用的情况下不接受危险,那么他们不值得进行安全审核。