PHP防御XSS攻击

XSS即跨站脚本工具


例如我在你的评论上写了



然后很有可能就会弹出楼主傻逼了,当然这只是恶作剧,但要是别人在你的获取cookie就很严重了,如下

通过这种方式,你的所有cookie就会被发送到对应的网站去,然后你就呵呵了~~~~


所以我们应该要过滤掉这些脚本,方法如下:(只能过滤部分)


	    function RemoveXSS($val) {
		    $val = preg_replace("/((\biframe\b)|(\bhref\b)|(\bsrc\b)|(\bvbscript\b)|(\bexpression\b)|(\bapplet\b)|(\bmeta\b)|(\bframeset\b))/i", "", $val);
		    $val = preg_replace("/]*>.*(?=<\\/script>)<\\/script>/i", "", $val);
		    // straight replacements, the user should never need these since they"re normal characters
		    $search = "abcdefghijklmnopqrstuvwxyz";
		    $search .="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
		    $search .= "1234567890!@#$%^&*()";
		    $search .= "~`;:?+/={}[]-_|\"";
		    for ($i = 0; $i < strlen($search); $i++) {
			    $val = preg_replace("/(&#[x|X]0{0,8}".dechex(ord($search[$i])).";?)/i", $search[$i], $val); // with a ;
			    $val = preg_replace("/(�{0,8}".ord($search[$i]).";?)/", $search[$i], $val); // with a ;
		    }
		    // 剥去字符串中的 HTML 标签:strip_tags
		    $val = strip_tags(htmlspecialchars_decode($val));
		    return $val;
   		}

   		//使用方法*********************************************************************
   		//*****************************************************************************
   		echo RemoveXss("我建议你去你那里玩http://www.baidu.com javascript hrefd iframe");


你可能感兴趣的:(PHP)