<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="Magike 1.2.0 Release" -->
<rss version="2.0"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
<title><![CDATA[DZ6.0的前台用户名自修改插件]]></title>
<link>http://www.oldjun.com/blog/index.php/archives/18/</link>
<description>Looking for change</description>
<language>zh-cn-utf8</language>
<docs>http://blogs.law.harvard.edu/tech/rss</docs>
<generator>Magike 1.2.0 Release</generator>
<webMaster>oldjun</webMaster><item>
<title><![CDATA[飞豆订阅]]></title>
<link>http://www.oldjun.com/blog/index.php/archives/18/#comment-46</link>
<author>><![CDATA[飞豆订阅]]></author>
<guid>http://www.oldjun.com/blog/index.php/archives/18/#comment-46</guid>
<pubDate>Thu, 17 Jul 2008 03:03:34 +0000</pubDate>
<description><![CDATA[你好，欣赏你的博客，觉得你的内容挺不错的
希望能同贵blog合作，同更多的朋友一起分享您的内容
感兴趣的话，可以直接跟我联系，
QQ&nbsp;&nbsp;120877855]]></description>
<content:encoded><![CDATA[<p>你好，欣赏你的博客，觉得你的内容挺不错的<br />希望能同贵blog合作，同更多的朋友一起分享您的内容<br />感兴趣的话，可以直接跟我联系，<br />QQ  120877855</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[keylee]]></title>
<link>http://www.oldjun.com/blog/index.php/archives/18/#comment-58</link>
<author>><![CDATA[keylee]]></author>
<guid>http://www.oldjun.com/blog/index.php/archives/18/#comment-58</guid>
<pubDate>Mon, 28 Jul 2008 18:13:47 +0000</pubDate>
<description><![CDATA[经常看你写的安全类文章，学习了不少东西，感觉阁下的PHP水平不错，能否用PHP帮我写个过滤自定义CSS（比如校内网那种）危险字符的东西呢？
QQ:943304722]]></description>
<content:encoded><![CDATA[<p>经常看你写的安全类文章，学习了不少东西，感觉阁下的PHP水平不错，能否用PHP帮我写个过滤自定义CSS（比如校内网那种）危险字符的东西呢？<br />QQ:943304722</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[keylee]]></title>
<link>http://www.oldjun.com/blog/index.php/archives/18/#comment-59</link>
<author>><![CDATA[keylee]]></author>
<guid>http://www.oldjun.com/blog/index.php/archives/18/#comment-59</guid>
<pubDate>Mon, 28 Jul 2008 18:37:18 +0000</pubDate>
<description><![CDATA[给个过滤思路也成，我实在是没有把握]]></description>
<content:encoded><![CDATA[<p>给个过滤思路也成，我实在是没有把握</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[oldjun]]></title>
<link>http://www.oldjun.com/blog/index.php/archives/18/#comment-60</link>
<author>><![CDATA[oldjun]]></author>
<guid>http://www.oldjun.com/blog/index.php/archives/18/#comment-60</guid>
<pubDate>Tue, 29 Jul 2008 02:11:10 +0000</pubDate>
<description><![CDATA[function filter($str){
$file=&quot;keywords.txt&quot;;
$fp=fopen($file,&quot;rb&quot;);
$content=fread($fp,filesize($file));
fclose($fp);
$keywords = explode(&quot;\n&quot;,$content);
foreach($keywords as $keys) {
$keys = str_replace(array(&quot;\n&quot;,&quot;\r&quot;),&quot;&quot;,$keys);
if(strpos($str,$keys)===false) {
continue;
}else {
$str=&quot;Bad words！&quot;;
break;
}
}
return $str;
}
很简单的思路，keywords.txt里把所有容易被XSS利用的关键词放进去，此法亦可以进行关键词过滤！]]></description>
<content:encoded><![CDATA[<p>function filter($str){<br />$file="keywords.txt";<br />$fp=fopen($file,"rb");<br />$content=fread($fp,filesize($file));<br />fclose($fp);<br />$keywords = explode("\n",$content);<br />foreach($keywords as $keys) {<br />		$keys = str_replace(array("\n","\r"),"",$keys);<br />        if(strpos($str,$keys)===false) {<br />            continue;<br />         }else {<br />             $str="Bad words！";<br />             break;<br />         }<br />}<br />return $str;<br />}<br />很简单的思路，keywords.txt里把所有容易被XSS利用的关键词放进去，此法亦可以进行关键词过滤！</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[oldjun]]></title>
<link>http://www.oldjun.com/blog/index.php/archives/18/#comment-61</link>
<author>><![CDATA[oldjun]]></author>
<guid>http://www.oldjun.com/blog/index.php/archives/18/#comment-61</guid>
<pubDate>Tue, 29 Jul 2008 02:14:07 +0000</pubDate>
<description><![CDATA[找了个国外牛人的代码，学习下吧：
function RemoveXSS($val) {
　// remove all non-printable characters. CR(0a) and LF(0b) and TAB(9) are allowed
　// this prevents some character re-spacing such as
　// note that you have to handle splits with \n, \r, and \t later since they *are* allowed in some inputs
　$val = preg_replace(&#39;/([\x00-\x08][\x0b-\x0c][\x0e-\x20])/&#39;, &#39;&#39;, $val);
　// straight replacements, the user should never need these since they&#39;re normal characters
　// this prevents like
　$search = &#39;abcdefghijklmnopqrstuvwxyz&#39;;
　$search .= &#39;ABCDEFGHIJKLMNOPQRSTUVWXYZ&#39;;
　$search .= &#39;1234567890!@#$%^&*()&#39;;
　$search .= &#39;~`&quot;;:?+/={}[]-_|\&#39;\\&#39;;
　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
// &#x0040 @ search for the hex values
$val = preg_replace(&#39;/(&#[x|X]0{0,8}&#39;.dechex(ord($search[$i])).&#39;;?)/i&#39;,$search[$i], $val); // with a ;
// @ @ 0{0,7} matches &#39;0&#39; zero to seven times
$val = preg_replace(&#39;/(&#0{0,8}&#39;.ord($search[$i]).&#39;;?)/&#39;, $search[$i],
$val); // with a ;
　}
　// now the only remaining whitespace attacks are \t, \n, and \r
$ra1 = Array(&#39;javascript&#39;, &#39;vbscript&#39;, &#39;expression&#39;, &#39;applet&#39;, &#39;meta&#39;, &#39;xml&#39;,
&#39;blink&#39;, &#39;link&#39;, &#39;style&#39;, &#39;script&#39;, &#39;embed&#39;, &#39;object&#39;, &#39;iframe&#39;, &#39;frame&#39;,
&#39;frameset&#39;, &#39;ilayer&#39;, &#39;layer&#39;, &#39;bgsound&#39;, &#39;title&#39;, &#39;base&#39;);
$ra2 = Array(&#39;onabort&#39;, &#39;onactivate&#39;, &#39;onafterprint&#39;, &#39;onafterupdate&#39;,
&#39;onbeforeactivate&#39;, &#39;onbeforecopy&#39;, &#39;onbeforecut&#39;, &#39;onbeforedeactivate&#39;,
&#39;onbeforeeditfocus&#39;, &#39;onbeforepaste&#39;, &#39;onbeforeprint&#39;, &#39;onbeforeunload&#39;,
&#39;onbeforeupdate&#39;, &#39;onblur&#39;, &#39;onbounce&#39;, &#39;oncellchange&#39;, &#39;onchange&#39;, &#39;onclick&#39;,
&#39;oncontextmenu&#39;, &#39;oncontrolselect&#39;, &#39;oncopy&#39;, &#39;oncut&#39;, &#39;ondataavailable&#39;,
&#39;ondatasetchanged&#39;, &#39;ondatasetcomplete&#39;, &#39;ondblclick&#39;, &#39;ondeactivate&#39;,
&#39;ondrag&#39;, &#39;ondragend&#39;, &#39;ondragenter&#39;, &#39;ondragleave&#39;, &#39;ondragover&#39;, &#39;ondragstart&#39;,
&#39;ondrop&#39;, &#39;onerror&#39;, &#39;onerrorupdate&#39;, &#39;onfilterchange&#39;, &#39;onfinish&#39;, &#39;onfocus&#39;,
&#39;onfocusin&#39;, &#39;onfocusout&#39;, &#39;onhelp&#39;, &#39;onkeydown&#39;, &#39;onkeypress&#39;, &#39;onkeyup&#39;,
&#39;onlayoutcomplete&#39;, &#39;onload&#39;, &#39;onlosecapture&#39;, &#39;onmousedown&#39;, &#39;onmouseenter&#39;,
&#39;onmouseleave&#39;, &#39;onmousemove&#39;, &#39;onmouseout&#39;,&#39;onmouseover&#39;, &#39;onmouseup&#39;,
&#39;onmousewheel&#39;, &#39;onmove&#39;, &#39;onmoveend&#39;, &#39;onmovestart&#39;, &#39;onpaste&#39;, &#39;onpropertychange&#39;,
&#39;onreadystatechange&#39;, &#39;onreset&#39;, &#39;onresize&#39;, &#39;onresizeend&#39;, &#39;onresizestart&#39;,
&#39;onrowenter&#39;, &#39;onrowexit&#39;, &#39;onrowsdelete&#39;, &#39;onrowsinserted&#39;, &#39;onscroll&#39;, &#39;onselect&#39;,
&#39;onselectionchange&#39;, &#39;onselectstart&#39;, &#39;onstart&#39;, &#39;onstop&#39;, &#39;onsubmit&#39;, &#39;onunload&#39;);
　$ra = array_merge($ra1, $ra2);
　$found = true; // keep replacing as long as the previous round replaced something
　while ($found == true) {
$val_before = $val;
for ($i = 0; $i < sizeof($ra); $i++) {
　$pattern = &#39;/&#39;;
　for ($j = 0; $j < strlen($ra[$i]); $j++) {
if ($j > 0) {
　$pattern .= &#39;(&#39;;
　$pattern .= &#39;(&#[x|X]0{0,8}([9][a][b]);?)?&#39;;
　$pattern .= &#39;|(&#0{0,8}([9][10][13]);?)?&#39;;
　$pattern .= &#39;)?&#39;;
}
　$pattern .= $ra[$i][$j];
}
$pattern .= &#39;/i&#39;;
$replacement = substr($ra[$i], 0, 2).&#39;&#39;.substr($ra[$i], 2); // add in
to nerf the tag
$val = preg_replace($pattern, $replacement, $val); // filter out the hex tags
if ($val_before == $val) {
　// no replacements were made, so exit the loop
　$found = false;
}
}
}
}]]></description>
<content:encoded><![CDATA[<p>找了个国外牛人的代码，学习下吧：<br />function RemoveXSS($val) { <br />　// remove all non-printable characters. CR(0a) and LF(0b) and TAB(9) are allowed <br />　// this prevents some character re-spacing such as  <br />　// note that you have to handle splits with \n, \r, and \t later since they *are* allowed in some inputs <br />　$val = preg_replace('/([\x00-\x08][\x0b-\x0c][\x0e-\x20])/', '', $val); <br />　// straight replacements, the user should never need these since they're normal characters <br />　// this prevents like  <br />　$search = 'abcdefghijklmnopqrstuvwxyz'; <br />　$search .= 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'; <br />　$search .= '1234567890!@#$%^&*()'; <br />　$search .= '~`";:?+/={}[]-_|\'\\'; <br />　for ($i = 0; $i < strlen($search); $i++) { <br />// ;? matches the ;, which is optional <br />// 0{0,7} matches any padded zeros, which are optional and go up to 8 chars <br />// &#x0040 @ search for the hex values <br />$val = preg_replace('/(&#[x|X]0{0,8}'.dechex(ord($search[$i])).';?)/i',$search[$i], $val); // with a ; <br />// @ @ 0{0,7} matches '0' zero to seven times <br />$val = preg_replace('/(&#0{0,8}'.ord($search[$i]).';?)/', $search[$i], <br />$val); // with a ; <br />　} <br />　// now the only remaining whitespace attacks are \t, \n, and \r <br />$ra1 = Array('javascript', 'vbscript', 'expression', 'applet', 'meta', 'xml', <br />'blink', 'link', 'style', 'script', 'embed', 'object', 'iframe', 'frame', <br />'frameset', 'ilayer', 'layer', 'bgsound', 'title', 'base'); <br />$ra2 = Array('onabort', 'onactivate', 'onafterprint', 'onafterupdate', <br />'onbeforeactivate', 'onbeforecopy', 'onbeforecut', 'onbeforedeactivate', <br />'onbeforeeditfocus', 'onbeforepaste', 'onbeforeprint', 'onbeforeunload', <br />'onbeforeupdate', 'onblur', 'onbounce', 'oncellchange', 'onchange', 'onclick', <br />'oncontextmenu', 'oncontrolselect', 'oncopy', 'oncut', 'ondataavailable', <br />'ondatasetchanged', 'ondatasetcomplete', 'ondblclick', 'ondeactivate',<br />'ondrag', 'ondragend', 'ondragenter', 'ondragleave', 'ondragover', 'ondragstart', <br />'ondrop', 'onerror', 'onerrorupdate', 'onfilterchange', 'onfinish', 'onfocus', <br />'onfocusin', 'onfocusout', 'onhelp', 'onkeydown', 'onkeypress', 'onkeyup',<br />'onlayoutcomplete', 'onload', 'onlosecapture', 'onmousedown', 'onmouseenter', <br />'onmouseleave', 'onmousemove', 'onmouseout','onmouseover', 'onmouseup', <br />'onmousewheel', 'onmove', 'onmoveend', 'onmovestart', 'onpaste', 'onpropertychange', <br />'onreadystatechange', 'onreset', 'onresize', 'onresizeend', 'onresizestart',<br />'onrowenter', 'onrowexit', 'onrowsdelete', 'onrowsinserted', 'onscroll', 'onselect',<br />'onselectionchange', 'onselectstart', 'onstart', 'onstop', 'onsubmit', 'onunload'); <br />　$ra = array_merge($ra1, $ra2); <br />　$found = true; // keep replacing as long as the previous round replaced something <br />　while ($found == true) { <br />$val_before = $val; <br />for ($i = 0; $i < sizeof($ra); $i++) { <br />　$pattern = '/'; <br />　for ($j = 0; $j < strlen($ra[$i]); $j++) { <br />if ($j > 0) { <br />　$pattern .= '('; <br />　$pattern .= '(&#[x|X]0{0,8}([9][a][b]);?)?'; <br />　$pattern .= '|(&#0{0,8}([9][10][13]);?)?'; <br />　$pattern .= ')?'; <br />} <br />　$pattern .= $ra[$i][$j]; <br />} <br />$pattern .= '/i'; <br />$replacement = substr($ra[$i], 0, 2).''.substr($ra[$i], 2); // add in <br /> to nerf the tag <br />$val = preg_replace($pattern, $replacement, $val); // filter out the hex tags <br />if ($val_before == $val) { <br />　// no replacements were made, so exit the loop <br />　$found = false; <br />} <br />} <br />} <br />}</p>]]></content:encoded>
</item>
</channel>
</rss>