<分区>
如果我从字符串中删除所有特殊字符,那么是否有任何 sql 注入(inject)的机会??(我的输入中不需要任何特殊字符)
我正在使用以下代码删除所有特殊字符
$unsafe = $_GET["tag"];
$safe = preg_replace('/[^a-zA-Z0-9 ]/s', '', $unsafe);
$safe = mysql_real_escape_string($safe);
还有机会进行sql注入(inject)吗??
标签 php mysql sql sql-injection
<分区>
如果我从字符串中删除所有特殊字符,那么是否有任何 sql 注入(inject)的机会??(我的输入中不需要任何特殊字符)
我正在使用以下代码删除所有特殊字符
$unsafe = $_GET["tag"];
$safe = preg_replace('/[^a-zA-Z0-9 ]/s', '', $unsafe);
$safe = mysql_real_escape_string($safe);
还有机会进行sql注入(inject)吗??
最佳答案
如果您使用 mysql_real_escape_string
,则没有理由删除“不安全字符”,因为这将使它们全部安全。
但是,不推荐使用 mysql_*
函数,因为它们很难正确使用。 PHP 开发人员现在推荐使用 PDO或 mysqli_*
functions反而。参见 this answer了解如何通过 PDO 或 mysqli 使用参数化查询。
关于php - 如果我删除所有特殊字符,Sql 注入(inject)的机会?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15233536/