这样做“;清除“;函数阻止SQL注入


Does this "Clear" function prevent SQL injection?

可能重复:
防止PHP 中SQL注入的最佳方法

php获取var清楚它是好是坏plz帮助我

function Clear($text)
    $Var = str_replace("'", "", $text);
    $Var = str_replace('"', '', $Var);
    $Var = strip_tags($Var);
    $Var = htmlentities($Var);
    return $Var;
}
$_GET['Var'] = "1='1'";
$Var = Clear($_GET['Var']);
$Query = "SELECT * FROM TABLE_NAME WHERE COL ='{$Var}'";
echo 'Result : '.($Query);

这是用于SQL注入的,这是我使用pdo编写的示例代码。如果我使用mysql_realescape_string,它将不起作用。

NO。否

这并不"安全",不会受到攻击。

最低限度使用mysql_real_escape_string(这是为此设计的)。第一个版本mysql_escape_string实际上是有缺陷的,这就是"真实"版本存在的原因。

然而,我推荐占位符作为一种更通用(更整洁)的解决方案。

请参阅如何防止PHP中的SQL注入?(我也投票把它当作一个骗局)。答案包括PDO和准备好的陈述等。

使用准备好的语句:http://php.net/manual/ru/pdo.prepared-statements.php