CI防止XSS攻击
1:config文件中:$config['global_xss_filtering'] = true;
2 system/core/input.php文件中 大概在 697行
if ($this->_enable_xss === TRUE)
{
$str = $this->security->xss_clean($str);
}
改成
if ($this->_enable_xss === TRUE)
{
$str=htmlspecialchars($str);
$str = $this->security->xss_clean($str);
}
如果哪里再要显示HTML源码再用
htmlspecialchars_decode给转换回来。 这样应该就能比较好的快速解决XSS问题
不建议这样子全局操作,做这个修改之前最好让其他成员都知道, 避免把一些不需要处理的数据处理了。 Bobby 发表于 2014-1-10 12:59 static/image/common/back.gif
不建议这样子全局操作,做这个修改之前最好让其他成员都知道, 避免把一些不需要处理的数据处理了。 ...
htmlspecialchars 只会涉及到& ‘ “< > 这几个字符。比一个一个处理方便很多。 在如果要解析到这几个字符的再特殊处理。
如果没记错的话,这个处理会在初始化的时候就处理, 也就是GPC拿到的时候也是处理之后的结果,拿不到原始值吧。如果说某个接口中的参数值包含这几个值那就可能存在问题了,尤其是一些加密校验的地方。 Bobby 发表于 2014-1-10 14:04 static/image/common/back.gif
如果没记错的话,这个处理会在初始化的时候就处理, 也就是GPC拿到的时候也是处理之后的结果,拿不到原始值 ...
CI就算开了global_xss_filtering 也不会过滤<> 符号。 但是如果用户输入了 <tr><td><br><h1>等等合法HTML标签,会把整个页面给搞乱的。 当然了,如果有个例。也会作特殊处理。 这样做只是会方便些。哎。最近这社区都没啥人气了。跟你讨论讨论,带动点气氛。
主要不是之后的处理问题, 是如果打开控制,能不能方便的接收到原始值,即便出现的概率下,因为有一些情况是要拿到原始数据再处理的,比如密码、签名这些。。我的意思就是打开globa之后没找到拿原始值的方法。 Bobby 发表于 2014-1-10 18:12 static/image/common/back.gif
主要不是之后的处理问题, 是如果打开控制,能不能方便的接收到原始值,即便出现的概率下,因为有一些情况 ...
OK明白你的意思了。 你觉得最好不要开
$config['global_xss_filtering' = true;
这个?
恩。 这玩意效率开了之后影响很 这个算法应该写得有问题。
效率倒不是问题,关键是做这个调整之后方不方便拿到原始未处理的数据,因为不保证以后不会用到,所以我说不开,在处理的地方去处理。拿的方法肯定有, 但没有找到很方便、合理的方式。 不过转义问题确实是需要注意的问题,防止xss注入。 :P 不明觉历 还是接受的时候手动开启比较好,比如有时候要获取带HTML标签的内容,全局开启之后就杯具了
页:
[1]
2