<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>运达&#039;s  blog &#187; BOM XSS</title>
	<atom:link href="https://www.yunda51.com/?feed=rss2&#038;tag=bom-xss" rel="self" type="application/rss+xml" />
	<link>https://www.yunda51.com</link>
	<description>运达的博客</description>
	<lastBuildDate>Wed, 12 Nov 2025 07:58:26 +0000</lastBuildDate>
	<language>zh-CN</language>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=4.0.19</generator>
	<item>
		<title>去除XSS（跨站脚本攻击漏洞）的函数</title>
		<link>https://www.yunda51.com/?p=1567</link>
		<comments>https://www.yunda51.com/?p=1567#comments</comments>
		<pubDate>Thu, 30 Jul 2015 11:11:55 +0000</pubDate>
		<dc:creator><![CDATA[运达]]></dc:creator>
				<category><![CDATA[php技术]]></category>
		<category><![CDATA[BOM XSS]]></category>
		<category><![CDATA[IE utf7]]></category>
		<category><![CDATA[漏洞]]></category>

		<guid isPermaLink="false">http://www.yunda51.com/?p=1567</guid>
		<description><![CDATA[废话不多说，直接上代码： /** * @todo 暂时写这的 * @去除XSS（跨站脚本攻击）的函数 * @p<a href="https://www.yunda51.com/?p=1567" class="read-more">Continue Reading</a>]]></description>
				<content:encoded><![CDATA[<p>废话不多说，直接上代码：</p>
<pre class="wp-code-highlight prettyprint">/** 
 * @todo  暂时写这的
* @去除XSS（跨站脚本攻击）的函数 
* @par $val 字符串参数，可能包含恶意的脚本代码如&lt;script language=&quot;javascript&quot;&gt;// &lt;![CDATA[
alert(&quot;hello world&quot;);
// ]]&gt;&lt;/script&gt;* @return 处理后的字符串 * @Recoded By thinkphp **/ public function RemoveXSS($val) { $val = preg_replace(&#039;/([\x00-\x08,\x0b-\x0c,\x0e-\x19])/&#039;, &#039;&#039;, $val); $search = &#039;abcdefghijklmnopqrstuvwxyz&#039;; $search .= &#039;ABCDEFGHIJKLMNOPQRSTUVWXYZ&#039;; $search .= &#039;1234567890!@#$%^&amp;amp;*()&#039;; $search .= &#039;~`&quot;;:?+/={}[]-_|\&#039;\\&#039;; for ($i = 0; $i &amp;lt; strlen($search); $i++) { $val = preg_replace(&#039;/(&amp;amp;#[xX]0{0,8}&#039;.dechex(ord($search[$i])).&#039;;?)/i&#039;, $search[$i], $val); // with a ; $val = preg_replace(&#039;/(&amp;amp;#0{0,8}&#039;.ord($search[$i]).&#039;;?)/&#039;, $search[$i], $val); // with a ; } $ra1 = Array(&#039;javascript&#039;, &#039;vbscript&#039;, &#039;expression&#039;, &#039;applet&#039;, &#039;meta&#039;, &#039;xml&#039;, &#039;blink&#039;, &#039;link&#039;, &#039;style&#039;, &#039;script&#039;, &#039;embed&#039;, &#039;object&#039;, &#039;iframe&#039;, &#039;frame&#039;, &#039;frameset&#039;, &#039;ilayer&#039;, &#039;layer&#039;, &#039;bgsound&#039;, &#039;title&#039;, &#039;base&#039;); $ra2 = Array(&#039;onabort&#039;, &#039;onactivate&#039;, &#039;onafterprint&#039;, &#039;onafterupdate&#039;, &#039;onbeforeactivate&#039;, &#039;onbeforecopy&#039;, &#039;onbeforecut&#039;, &#039;onbeforedeactivate&#039;, &#039;onbeforeeditfocus&#039;, &#039;onbeforepaste&#039;, &#039;onbeforeprint&#039;, &#039;onbeforeunload&#039;, &#039;onbeforeupdate&#039;, &#039;onblur&#039;,&#039;onbounce&#039;, &#039;oncellchange&#039;, &#039;onchange&#039;, &#039;onclick&#039;, &#039;oncontextmenu&#039;, &#039;oncontrolselect&#039;, &#039;oncopy&#039;, &#039;oncut&#039;, &#039;ondataavailable&#039;, &#039;ondatasetchanged&#039;, &#039;ondatasetcomplete&#039;, &#039;ondblclick&#039;, &#039;ondeactivate&#039;, &#039;ondrag&#039;, &#039;ondragend&#039;, &#039;ondragenter&#039;, &#039;ondragleave&#039;, &#039;ondragover&#039;, &#039;ondragstart&#039;, &#039;ondrop&#039;, &#039;onerror&#039;, &#039;onerrorupdate&#039;, &#039;onfilterchange&#039;, &#039;onfinish&#039;, &#039;onfocus&#039;, &#039;onfocusin&#039;, &#039;onfocusout&#039;, &#039;onhelp&#039;, &#039;onkeydown&#039;, &#039;onkeypress&#039;, &#039;onkeyup&#039;, &#039;onlayoutcomplete&#039;, &#039;onload&#039;, &#039;onlosecapture&#039;, &#039;onmousedown&#039;, &#039;onmouseenter&#039;, &#039;onmouseleave&#039;, &#039;onmousemove&#039;, &#039;onmouseout&#039;, &#039;onmouseover&#039;, &#039;onmouseup&#039;, &#039;onmousewheel&#039;, &#039;onmove&#039;, &#039;onmoveend&#039;, &#039;onmovestart&#039;, &#039;onpaste&#039;, &#039;onpropertychange&#039;, &#039;onreadystatechange&#039;, &#039;onreset&#039;, &#039;onresize&#039;, &#039;onresizeend&#039;, &#039;onresizestart&#039;, &#039;onrowenter&#039;, &#039;onrowexit&#039;, &#039;onrowsdelete&#039;, &#039;onrowsinserted&#039;, &#039;onscroll&#039;, &#039;onselect&#039;, &#039;onselectionchange&#039;, &#039;onselectstart&#039;, &#039;onstart&#039;, &#039;onstop&#039;, &#039;onsubmit&#039;, &#039;onunload&#039;); $ra = array_merge($ra1, $ra2); $found = true; while ($found == true) { $val_before = $val; for ($i = 0; $i &amp;lt; sizeof($ra); $i++) { $pattern = &#039;/&#039;; for ($j = 0; $j &amp;lt; strlen($ra[$i]); $j++) { if ($j &amp;gt; 0) { $pattern .= &#039;(&#039;; $pattern .= &#039;(&amp;amp;#[xX]0{0,8}([9ab]);)&#039;; $pattern .= &#039;|&#039;; $pattern .= &#039;|(&amp;amp;#0{0,8}([9|10|13]);)&#039;; $pattern .= &#039;)*&#039;; } $pattern .= $ra[$i][$j]; } $pattern .= &#039;/i&#039;; $replacement = substr($ra[$i], 0, 2).&#039;&#039;.substr($ra[$i], 2); $val = preg_replace($pattern, $replacement, $val); if ($val_before == $val) { $found = false; } } } return $val; }</pre>
<p>转载请注明转自:运达's blog 原文地址：http://www.yunda51.com/1567.html</p>
]]></content:encoded>
			<wfw:commentRss>https://www.yunda51.com/?feed=rss2&#038;p=1567</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
