PHP XSS (cross site scripting) filter

| 2008年10月18日星期六

from:http://kallahar.com/smallprojects/php_xss_filter_function.php

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('/([\x00-\x08,\x0b-\x0c,\x0e-\x19])/', '', $val);

// straight replacements, the user should never need these since they're normal characters
// this prevents like
$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

// &#x0040 @ search for the hex values
$val = preg_replace('/(&#[xX]0{0,8}'.dechex(ord($search[$i])).';?)/i', $search[$i], $val); // with a ;
// &#00064 @ 0{0,7} matches '0' zero to seven times
$val = preg_replace('/(&#0{0,8}'.ord($search[$i]).';?)/', $search[$i], $val); // with a ;
}

// now the only remaining whitespace attacks are \t, \n, and \r
$ra1 = Array('javascript', 'vbscript', 'expression', 'applet', 'meta', 'xml', 'blink', 'link', 'style', 'script', 'embed', 'object', 'iframe', 'frame', 'frameset', 'ilayer', 'layer', 'bgsound', 'title', 'base');
$ra2 = Array('onabort', 'onactivate', 'onafterprint', 'onafterupdate', 'onbeforeactivate', 'onbeforecopy', 'onbeforecut', 'onbeforedeactivate', 'onbeforeeditfocus', 'onbeforepaste', 'onbeforeprint', 'onbeforeunload', 'onbeforeupdate', 'onblur', 'onbounce', 'oncellchange', 'onchange', 'onclick', 'oncontextmenu', 'oncontrolselect', 'oncopy', 'oncut', 'ondataavailable', 'ondatasetchanged', 'ondatasetcomplete', 'ondblclick', 'ondeactivate', 'ondrag', 'ondragend', 'ondragenter', 'ondragleave', 'ondragover', 'ondragstart', 'ondrop', 'onerror', 'onerrorupdate', 'onfilterchange', 'onfinish', 'onfocus', 'onfocusin', 'onfocusout', 'onhelp', 'onkeydown', 'onkeypress', 'onkeyup', 'onlayoutcomplete', 'onload', 'onlosecapture', 'onmousedown', 'onmouseenter', 'onmouseleave', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'onmousewheel', 'onmove', 'onmoveend', 'onmovestart', 'onpaste', 'onpropertychange', 'onreadystatechange', 'onreset', 'onresize', 'onresizeend', 'onresizestart', 'onrowenter', 'onrowexit', 'onrowsdelete', 'onrowsinserted', 'onscroll', 'onselect', 'onselectionchange', 'onselectstart', 'onstart', 'onstop', 'onsubmit', 'onunload');
$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 = '/';
for ($j = 0; $j < strlen($ra[$i]); $j++) {
if ($j > 0) {
$pattern .= '(';
$pattern .= '(&#[xX]0{0,8}([9ab]);)';
$pattern .= '|';
$pattern .= '|(&#0{0,8}([9|10|13]);)';
$pattern .= ')*';
}
$pattern .= $ra[$i][$j];
}
$pattern .= '/i';
$replacement = substr($ra[$i], 0, 2).''.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;
}
}
}
return $val;
}

More......

门外汉的视角:照相记忆与七田真骗子

| 2008年10月9日星期四

PS:呆家闲着扯蛋~在中国记忆力网看到七田中的是不是骗子的话题,于是也加入了支持版主mao9698的一组的打倒七田真队伍,过几天发现mao9698版主把贴子置顶了,我说那贴子去哪来着~原来置顶了:-)贴俺BLOG上,为伟大的祖国记忆事业发展发展!


~~~~~~~~~~~~~~~~~~~~~~我是分割线~~~~~~~~~

  看了闲云版主发的《头脑航行: 七田真的照相记忆法是不是骗人?!》置顶贴,以及多个版主及会员观点的冲突,顿生一些读后感。欢迎大家拍砖!:)

  首先,我们一点点将事情理清头绪。

  第一点:右脑是什么?

  1981年,诺贝尔医学生理奖得主罗杰·史贝尼教授将左右脑的功能差异归类:右脑(本能脑·潜意识脑) 左脑(意识脑)。

  由此可见,右脑的研究很久就有前沿的科学家们研究分析。研究的成果开始吸引潜能开发专家的注意力,由此拉开了一场“右脑革命”。七田真也就是潜能开发专家的一部分人。

  第二点:照相记忆是什么?

  严格来说,很多的右脑产品都是围绕“图像”核心去开发的,由此引申出N多右脑技巧、右脑方法。

  例如记忆术中就有图像记忆法。将数字、字母、字符、字组编码成有意义可被右脑接受的图像,其桩子符合右脑逻辑而成的记忆法。

  七田真的照相记法也是如此。七田真有两本书:右脑波动速读以快速的方式阅读书籍;右脑照相记忆可只看一眼就记住任何东西,并可随时回忆起来。

  而我想提的是:话题会有冲突

  我们人类常常探究一件事、一个理论的错与对时,常用了大量的辩证思维、时间去论证它们。

  感性的人会将一面的优点去掩盖全部的缺点,以期认可这件事应该都是美好的,而不应受到指责,试图以自已的态度去影响有人的观点。

  理性的人只承认看得见、摸得着而活生生存在的事物,他们期望看到的缺点最好适而可止,是完美的。然而独断者的说法将十分决绝:你犯一点错误,你就有必要为全部的错误买单!

  七田真是怎样的人一个人呢?

  闲云版主列举了大量的资料,在普通人眼里看来:日本人七田真是值得受到尊重而身份显赫的潜能开发专家。

  他的职位有哪些呢?博士、教授、会长、顾问、校长、所长。

  他获了哪些奖呢?功劳奖、优等奖、骑士勋章。

  他以右脑为主题的著作颇丰。研究右脑长达40年。

  

  即便如此,我们关注的照相记忆对我们有没有用?

  一、我们尚未从日本的图书、视频、音频资料看到有练成“照相记忆”的事实。

  二、我们仍然尚未看到活生生练成“照相记忆”的案例。

  三、我们中国记忆界的领军人物如张海洋及民间记忆爱好者也没理出一个所以然。

  大量证据表明,照相记忆法无一人出现图书所描述的结果:喀嚓地一下就像照相机把眼前景物拍下成为脑中的记忆。

  假设前提,照相记忆练成之后将会怎样?

  一、日本的教育将领先全球。

  二、全球的媒体将以大量的版面报导练成照相记忆者的事迹。

  三、七田真本人将获得全球最高的荣誉,成为日本的记忆科学家。

  但事实,这一切并没有发生。抑或我们一厢情愿的认可?

  科普:照相记忆到底可不可能?

  我们都知道人脑与电脑的区别:人会思考,机器不会。

  电脑由存储器、运算器、CPU、输入与输出设备组成,电脑之所以能保存文件介质是因为存储器的存在。

  七田真将我们的眼睛当作照相机,只要喀嚓一下就会将所见的记下来。但人眼与照相机的区别是,照相机的感光器会将影像介质转换成数字介质存起来,就是1和0的排列。但我们人眼的视觉神经并非如此。如果大家像七田真戴有一副“记忆眼镜”的电子产品的话,那倒有可能。

  我们照相记忆到底是干吗呢?

  一、我们可以记下大量的知识,成为某个领域无所不知的学者。

  二、使我们的生活更加美好,能在年暮时将往事回想历历在目,而享受精神愉悦。

  与此自相矛盾的是,你用20~30秒拍下一页图书的内容,请问:图书的内容看懂了么?你深刻理解到作者要表达的思想?你将“照相”都经过重新的科学组织、分类整理了么?如果没有,显然,照相记忆没有用。

  那么,七田真到底是不是骗子?

  这里的言论将不是客观,而是个人的看法。

  一、七田真的右脑方法缺乏科学的理论、实践作为支持。

  二、照相记忆是哗众取宠、个人臆测的产物。

  三、七田真的东西大多忽悠小孩(某某人说:小孩比大人更适合右脑开发),对成年人不适用。

  客观地说:七田真在照相记忆是骗子,其它方面不是骗子。他的照相记忆确实在骗人。

  

  最后,我们为什么深陷这个话题?

  从NLP心理学的角度来解释:如果我有能满足你想要的东西,那么,你就会痴迷上这个东西。

  大多数的人都有不劳而获的想法,什么意思呢?期待天上有掉陷饼的机遇。

  拿一个例子来说,国外有个优秀的“吸引力定律”,但国内一个骗子看到了,便发展出“自然法则”,他告诉所有的人,你学会吸引力定律,你将会获得所想要的,就像阿拉丁神灯一样,财富任何一切都不再是梦。然后这个骗子紫雨会告诉你,你要付费加入一切皆可成梦。悲哀的是,做白日梦的人上当了,他以为一切皆梦成真。

  为此,我想告诉朋友们:我们要学习一件事,应该清楚的看到本质!

  例如,中国记忆力网的图像记忆法就有理论、实践作为基础而发展的,任何人都看到通过图像记忆法可2分钟记下100数字。

  

  客观与非客观

  如果有七田真狂热的粉丝看见了,他会怒恼:你不能如此说七田真是骗子!他其它的领域是卓越的!

  我将专断的说:是的,他其它领域可能是非凡的,但是,他的照像记忆是骗人的!他就是骗子!

  你将说,你没有证据!

  我将说,证据就是你!

  另外:七田真的图书资料我粗略看了就丢了,因为对俺没用。:)  (我的意思是:你能看得懂,听得明白,感觉有用,就去看,反之,丢了!)


More......