这对SQL注入是否足够安全

Dan*_*ife 2 php sql code-injection

我刚刚读了关于SQL注入的内容,并在我正在阅读的博客上发现了这个函数我想知道它是否对SQL注入是安全的..如果我传递remove_mq($_POST)给它,我可以$_POST["var"]在查询中使用没有问题吗?

function remove_mq($array){
    foreach($array as $key => $value){
        if(is_array($value)){
            $array[$key] = remove_mq($value);
        }
        else{
            $array[$key] = addslashes($value);
        }
    }
    return $array;
}
Run Code Online (Sandbox Code Playgroud)

Thi*_*ter 5

不.添加斜杠不是为查询转义的正确函数.你需要使用mysql_real_escape_string

除此之外,你应该执行一个查询实际使用值之前SQL逃逸.假设你有类似的东西<input name="foo" value="$_POST[foo]"- 那么你需要它 - htmlspecialchars()被动 - 而不是addslashes(等等) - 逃脱


除此之外,最好的解决方案是使用PDO预准备语句,因为您将SQL查询与params分开,因此您根本不需要任何转义.

  • PDO预处理语句优于使用mysql_real_escape_string和ad-hoc查询.addlashes的原因并不安全,顺便说一下,有一些多字节字符会让攻击者仍然进行恶意查询. (2认同)