PHP过滤JS字符串函数

2017-09-04 PHP常用方法 757 WGE

在PHP开发中,我们通常会对用户提交的内容进行过滤,尤其是针对XSS攻击时,例如我们在做一个留言板功能时,可能会有不法分子通过留言板提交一条js函数

<spcrit>alert(1);</script>

可能你的页面就会出现弹窗,这是我们需要对这条留言进行过滤

/*
 * 对字符串进行过滤
 * @param String $str 字符串
 **/
function stripHTML($str){
	$pattern=array (
		"'<script[^>]*?>.*?</script>'si",
		"'<style[^>]*?>.*?</style>'si",
		"'<[\/\!]*?[^<>]*?>'si",
		"'([\r\n])[\s]+'",
		"'&(quot|#34);'i",
		"'&(amp|#38);'i",
		"'&(lt|#60);'i",
		"'&(gt|#62);'i",
		"'&(nbsp|#160);'i",
		"'&(iexcl|#161);'i",
		"'&(cent|#162);'i",
		"'&(pound|#163);'i",
		"'&(copy|#169);'i",
		"'&#(\d+);'e"
	);
	$replace=array ('', '', "\\1", '', "&", "<", ">", ' ', chr(161), chr(162), chr(163), chr(169), "chr(\\1)");

	return preg_replace($pattern, $replace, $str);
}