【发布时间】:2016-03-27 14:48:27
【问题描述】:
我有以下php XSS过滤功能:
<?php
function xssfilter($inp){
$inp = html_entity_decode(urldecode($inp));
$inp = preg_replace('/!/','',$inp);
if (preg_match('/script|on|xmlns|data/iu',$inp)){
while(preg_match('/script|on|xmlns|data/iu',$inp)){
$inp = preg_replace('/(script)|(on)|(xmlns)|(data)/iu','NO!',$inp);
}
}
return $inp;
}
?>
显然您可以在此处上传远程脚本,但我的问题是您是否可以通过某种方式绕过正则表达式?
【问题讨论】:
-
这个问题听起来像个小问题。
-
看起来编写函数的人对如何清理内容并没有很好的了解。 URL 解码、实体解码、替换感叹号、替换一些关键字......看起来他们只是在问题上扔东西,希望它能解决问题。
标签: php regex validation xss user-input