2009-11-10 35 views
1

如何停止CodeIgniter添加分号;通过POST发送的包含&符号的数据&CodeIgniter添加分号

例如,它将“a = 1 & b = 2 & c = 3”转换成“a = 1&b; = 2&c; = 3”。从寻找在论坛上这似乎是XSS过滤,这是我不想只为1个控制器禁用站点范围内的,所以我想下面的代码,但它仍然这样做:

$this->config->set_item('global_xss_filtering',false); 
+0

你知道,如果你无法$配置[” global_xss_filtering'] = FALSE ;,它不会出来?你能检查它吗? – shin 2009-11-10 13:23:20

+0

尝试首先在整个网站检查是否有效,然后工作自下而上 – Natrium 2009-11-10 13:26:07

+0

它在配置文件中禁用时起作用 – Tim 2009-11-10 14:01:21

回答

0

我不使用XSS过滤,因为它仍然有错误。例如,当XSS过滤器打开时,您将无法发布表单,其中有YouTube的嵌入代码。我只使用我希望它进行消毒的每个字段的过滤器。

如果您的表单正在关闭XSS过滤功能,然后将其关闭。如果您需要对XSS攻击进行消毒,可以考虑另一个库,如HTML purifier

0

问题出在安全类

以下行是如果缺少添加分号的。

$str = preg_replace('#(&\#?[0-9a-z]{2,})([\x00-\x20])*;?#i', "\\1;\\2", $str); 

解决方案是扩展CI,创建您自己的My_Security类。使用_validate_entities函数将其粘贴到核心文件夹中。

评论上面的行。