如何停止CodeIgniter添加分号; 到通过POST发送的包含&符号& 的数据?
例如,它将“a = 1& b = 2& c = 3”转换为“a = 1& b; = 2& c; = 3”。从论坛上看,它似乎是XSS过滤,我不想仅为1个控制器禁用整个站点,所以我尝试了下面的代码,但它仍然在做:$this->config->set_item('global_xss_filtering',false);
答案 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