CodeIgniter添加分号

时间:2009-11-10 13:17:30

标签: codeigniter

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

例如,它将“a = 1& b = 2& c = 3”转换为“a = 1& b; = 2& c; = 3”。从论坛上看,它似乎是XSS过滤,我不想仅为1个控制器禁用整个站点,所以我尝试了下面的代码,但它仍然在做:

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

3 个答案:

答案 0 :(得分:0)

我没有使用XSS过滤,因为它仍然有bug。例如,当启用XSS过滤时,您将无法发布包含youtube嵌入代码的表单。我只使用我希望它进行消毒的每个字段的过滤器。

如果您的表单正在关闭XSS过滤,则将其关闭。如果您需要针对XSS攻击进行清理,可以考虑使用其他库,例如HTML purifier

答案 1 :(得分:0)

问题出在安全类

如果缺少,则以下行添加分号。

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

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

评论上面的一行。

答案 2 :(得分:0)

要关闭跨站点脚本过滤,请参阅codeigniter this user guide page

或者,如果您想通过黑客核心修复代码,请查看this solution