如果我删除所有特殊字符,Sql注入的机会?

Bad*_*dal 3 php mysql sql sql-injection

如果我删除字符串中的所有特殊字符比没有任何SQL注入的机会??(我的输入中不需要任何特殊字符)

我正在使用以下代码删除所有特殊字符

    $unsafe = $_GET["tag"];
$safe = preg_replace('/[^a-zA-Z0-9 ]/s', '', $unsafe);
$safe = mysql_real_escape_string($safe);
Run Code Online (Sandbox Code Playgroud)

有没有机会进行SQL注入?

Rei*_*ica 6

如果你使用mysql_real_escape_string,那么没有理由删除"不安全的字符",因为它会使它们都安全.

但是,mysql_*不建议使用这些功能,因为它们很难正确使用.PHP开发人员现在建议使用PDOmysqli_*函数.有关如何使用PDO或mysqli参数化查询,请参阅此答案.

  • mysql_real_escape_string函数不是一个全能的.它只会转义特殊字符,因此SELECT*FROM users WHERE score = $ var仍然容易受到$ var ="1 OR 1 = 1"的影响 (4认同)