我想学习php,并希望使用函数来保护窗体再次SQL注入! 但不知何故,形成记录我的数据库包含任何特殊字符,如“每一个数据“=)/()/ */防止SQL注入
我的过滤功能:
function filter($data) {
$data = trim(htmlentities(strip_tags($data)));
if (get_magic_quotes_gpc())
$data = stripslashes($data);
$data = mysql_real_escape_string($data);
return $data;
}
注册页面以获取POST DATAS:
foreach($_POST as $key => $value) {
$data[$key] = filter($value);
}
然后我试图特殊字符和形式拯救他们!我一个做错了吗?
有这些特殊字符可以。 'mysql_real_escape_string'(有点)保护你免受SQL注入。这些字符本身并没有害处。它们不是导致SQL注入的原因,它主要是滥用单引号''',这会将你暴露给漏洞。另外,当你插入数据时,我不会调用'htmlentities'。只有在你去显示它时调用它。 – drew010 2012-07-24 00:31:34