php常用过滤非法/特殊字符串的方法
//简单过滤JS 、PHP标签
function cleanJs($html){
$html=trim($html);
$html=str_replace(array("<?","?>"),array("<?","?>"),$html);
$pattern=array(
""<script[^>]*?>.*?</script>"si",
""<style[^>]*?>.*?</style>"si",
""<frame[^>]*?>"si",
""<iframe[^>]*?>.*?</iframe>"si",
""<link[^>]*?>"si"
);
$replace=array("","","","","");
return preg_replace($pattern,$replace,$html);
}
/* Remove JS/CSS/IFRAME/FRAME 过滤JS/CSS/IFRAME/FRAME/XSS等恶意攻击代码(可安全使用)
* Return string
*/
function cleanJsCss($html){
$html=trim($html);
$html=preg_replace("/ +/", "", $html);
$html=preg_replace("/(\\0)+/", "", $html);
$html=preg_replace("#(&#*w+)[x00-x20]+;#u","\1;",$html);
$html=preg_replace("#(&#x*)([0-9A-F]+);*#iu","\1\2;",$html);
$html=preg_replace("/%u0([a-z0-9]{3})/i", "&#x\1;", $html);
$html=preg_replace("/%([a-z0-9]{2})/i", "&#x\1;", $html);
$html=str_replace(array("<?","?>"),array("<?","?>"),$html);
$html=preg_replace("# +#"," ",$html);
$scripts=array("javascript","vbscript","script","applet","alert","document","write","cookie","window");
foreach($scripts as $script){
$temp_str="";
for($i=0;$i<strlen($script);$i++){
$temp_str.=substr($script,$i,1)."s*";
}
$temp_str=substr($temp_str,0,-3);
$html=preg_replace("#".$temp_str."#s",$script,$html);
$html=preg_replace("#".ucfirst($temp_str)."#s",ucfirst($script),$html);
}
$html=preg_replace("#<a.+?href=.*?(alert(|alert(|javascript:|window.|document.|.cookie|<script|<xss).*?>.*?</a>#si", "", $html);
$html=preg_replace("#<img.+?src=.*?(alert(|alert(|javascript:|window.|document.|.cookie|<script|<xss).*?>#si", "", $html);
$html=preg_replace("#<(script|xss).*?>#si", "<\1>", $html);
$html=preg_replace("#(<[^>]*?)(onblur|onchange|onclick|onfocus|onload|onmouseover|onmouseup|onmousedown|onselect|onsubmit|onunload|onkeypress|onkeydown|onkeyup|onresize)[^>]*>#is","\1>",$html);
//$html=preg_replace("#<(/*s*)(alert|applet|basefont|base|behavior|bgsound|blink|body|embed|expression|form|frameset|frame|head|html|ilayer|iframe|input|layer|link|meta|object|plaintext|style|script|textarea|title|xml|xss)([^>]*)>#is", "<\1\2\3>", $html);
$html=preg_replace("#<(/*s*)(alert|applet|basefont|base|behavior|bgsound|blink|body|expression|form|frameset|frame|head|html|ilayer|iframe|input|layer|link|meta|object|plaintext|style|script|textarea|title|xml|xss)([^>]*)>#is", "<\1\2\3>", $html);
$html=preg_replace("#(alert|cmd|passthru|eval|exec|system|fopen|fsockopen|file|file_get_contents|readfile|unlink)(s*)((.*?))#si", "\1\2(\3)", $html);
$bad=array(
"document.cookie" => "",
"document.write" => "",
"window.location" => "",
"javascripts*:" => "",
"Redirects+302" => "",
"<!--" => "<!--",
"-->" => "-->"
);
foreach ($bad as $key=>$val){
$html=preg_replace("#".$key."#i",$val,$html);
}
return $html;
}
//过滤html标签以及敏感字符
function cleanHtml($html){
return cleanYellow(htmlspecialchars($html));
}
//过滤部分HTML标签
function cleanFilter($html){
$html=trim($html);
$html=preg_replace("/<p[^>]*?>/is","<p>",$html);
$html=preg_replace("/<div[^>]*?>/is","<div>",$html);
$html=preg_replace("/<ul[^>]*?>/is","<ul>",$html);
$html=preg_replace("/<li[^>]*?>/is","<li>",$html);
$html=preg_replace("/<span[^>]*?/is","<span>",$html);
$html=preg_replace("/<a[^>]*?>(.*)?</a>/is","${1}",$html);
$html=preg_replace("/<table[^>]*?>/is","<table>",$html);
$html=preg_replace("/<tr[^>]*?>/is","<tr>",$html);
$html=preg_replace("/<td[^>]*?>/is","<td>",$html);
$html=preg_replace("/<ol[^>]*?>/is","<ol>",$html);
$html=preg_replace("/<form[^>]*?>/is","",$html);
$html=preg_replace("/<input[^>]*?>/is","",$html);
return $html;
}
//过滤非法的敏感字符串
function cleanYellow($txt){
$txt=str_replace(
array("黄色","性爱","做爱","我日","我草","我靠","尻","共产党","胡锦涛","毛泽东",
"政府","中央","研究生考试","性生活","色情","情色","我考","麻痹","妈的","阴道",
"淫","奸","阴部","爱液","阴液","臀","色诱","煞笔","傻比","阴茎","法轮功","性交","阴毛","江泽民"),
array("*1*","*2*","*3*","*4*","*5*","*6*","*7*","*8*","*9*","*10*",
"*11*","*12*","*13*","*14*","*15*","*16*","*17*","*18*","*19*","*20*",
"*21*","*22*","*23*","*24*","*25*","*26*","*27*","*28*","*29*","*30*","*31*","*32*","*33*","*34*"),
$txt);
return $txt;
}
//过滤敏感字符串以及恶意代码
function cleanAll($html){
return cleanYellow(cleanJsCss($html));
}
//全半角字符替换
function setFilter($html){
$arr=array("0" => "0", "1" => "1", "2" => "2", "3" => "3", "4" => "4",
"5" => "5", "6" => "6", "7" => "7", "8" => "8", "9" => "9",
"A" => "A", "B" => "B", "C" => "C", "D" => "D", "E" => "E",
"F" => "F", "G" => "G", "H" => "H", "I" => "I", "J" => "J",
"K" => "K", "L" => "L", "M" => "M", "N" => "N", "O" => "O",
"P" => "P", "Q" => "Q", "R" => "R", "S" => "S", "T" => "T",
"U" => "U", "V" => "V", "W" => "W", "X" => "X", "Y" => "Y",
"Z" => "Z", "a" => "a", "b" => "b", "c" => "c", "d" => "d",
"e" => "e", "f" => "f", "g" => "g", "h" => "h", "i" => "i",
"j" => "j", "k" => "k", "l" => "l", "m" => "m", "n" => "n",
"o" => "o", "p" => "p", "q" => "q", "r" => "r", "s" => "s",
"t" => "t", "u" => "u", "v" => "v", "w" => "w", "x" => "x",
"y" => "y", "z" => "z",
"(" => "(", ")" => ")", "〔" => "[", "〕" => "]", "【" => "[",
"】" => "]", "〖" => "[", "〗" => "]", "“" => "[", "”" => "]",
"‘" => "[", "’" => "]", "{" => "{", "}" => "}", "《" => "<",
"》" => ">",
"%" => "%", "+" => "+", "—" => "-", "-" => "-", "~" => "-",
":" => ":", "。" => ".", "、" => ",", "," => ".", "、" => ".",
";" => ",", "?" => "?", "!" => "!", "…" => "-", "‖" => "|",
"”" => """, "’" => "`", "‘" => "`", "|" => "|", "〃" => """,
" " => " ");
return strtr($html,$arr);
}声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。
- 上一篇:没有了
- 下一篇: PHP CURL模拟登陆并提交数据,及PHP CURL文件上传/图片下载等(仅作调试,未完善)
