|
本帖最后由 paperen 于 2012-3-31 14:08 编辑
启用全局的XSS过滤(config中的global_xss_filtering)后,使用kindeditor编辑文本提交后发现提交过来的html代码被破坏了
比如我在编辑器源码中的内容为
HTML复制代码
<p style="margin-top:0.4em;margin-bottom:0.5em;line-height:19px;font-family:sans-serif;font-size:13px;white-space:normal;background-color:#FFFFFF;">
这一类型的状态码,代表请求已成功被服务器接收、理解、并接受。
</p>
复制代码
在后端接收数据后输出为
HTML复制代码
<p
这一类型的状态码,代表请求已成功被服务器接收、理解、并接受。
</p>
复制代码
我最终确定到Security的_remove_evil_attributes方法中,而其中使用到的那个正则如下:
PHP复制代码
$str = preg_replace("/<(\/?[^><]+?)([^A-Za-z\-])(".implode('|', $attribs).")([\s><])([><]*)/i", '<$1$2$4$5', $str, -1, $count);
复制代码
正则看不明白,而我在 <$1$2$4$5 后面补上>就可以了,不知道这算不算一个bug,而2.0.2中则不会有这个情况,当然_remove_evil_attributes这个方法也不一样
不知道这样补上>是否正确,但如果有人也遇到这个情况况且可以先这样修复
补充:加上>在某些场合还是不顶用,最终我还是用回旧版的_remove_evil_attributes方法,在core中继承一下Security类并重写_remove_evil_attributes
|
|