如果我从字符串中删除所有特殊字符,而不是sql注入的机会?(我的输入中不需要任何特殊字符)
我使用以下代码删除所有特殊字符
$unsafe = $_GET["tag"];
$safe = preg_replace('/[^a-zA-Z0-9 ]/s', '', $unsafe);
$safe = mysql_real_escape_string($safe);
还有没有机会进行SQL注入?
答案 0 :(得分:6)
如果您使用mysql_real_escape_string
,则没有理由删除“不安全的字符”,因为它会使它们全部安全。
但是,不建议使用mysql_*
功能,因为它们很难正确使用。 PHP开发人员现在建议使用PDO或mysqli_*
functions。有关如何使用PDO或mysqli的参数化查询,请参阅this answer。