php 去除XSS脚本攻击函数

文章讨论了PHP中的remove_XSS函数因性能低下和安全性不足而应被淘汰,并推荐使用strip_tags和htmlspecialchars作为更安全、高效的XSS过滤方案。

一:remove_XSS方法

<?php
	/**
	 * @去除XSS(跨站脚本攻击)的函数
	 * @par $val 字符串参数,可能包含恶意的脚本代码如<script language="javascript">alert("hello world");</script>
	 * @return  返回处理后的字符串
	 **/
	function remove_XSS($val) {
   
   
	    // remove all non-printable characters. CR(0a) and LF(0b) and TAB(9) are allowed
	    // this prevents some character re-spacing such as <java\0script>
	    // note that you have to handle splits with \n, \r, and \t later since they *are* allowed in some inputs
	    $val = preg_replace('/([\x00-\x08,\x0b-\x0c,\x0e-\x19])/', '', $val);

	    // straight replacements, the user should never need these since they're normal characters
	    // this prevents like <IMG SRC=@avascript:alert('XSS')>
	    $search = 'abcdefghijklmnopqrstuvwxyz';
	    $search .= 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
	    $search .= '1234567890!@#$%^&*()';
	    $search .= '~`";:?+/={}[]-_|\'\\';
	    for ($i = 0; $i < strlen($search); $i++) {
   
   
	        // ;? matches the ;, which is optional
	        // 0{0,7} matches any padded zeros, which are optional and go up to 8 chars

	        // @ @ search for the hex values
	        $val = preg_replace('/(&#[xX]0{0,8}'.dechex(ord($search[$i])).';?)/i', $search[$i], $val); // with a ;
	        // @ @ 0{0,7} matches '0' zero to seven times
	        $val = preg_replace('/(�{0,8}'.ord($search[$i]).';?)/', $search[$i], $val)
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值