我正在写一本书籍列表网站,并遇到了codeigniter的xss过滤问题.提交表单以创建列表时,包含“Javascript:”的任何标题都将替换为“[REMOVED]”.我试过从POST数组访问数据,如下所示:
$title = $_POST['title'];
避免使用Input类,但它仍然以某种方式被过滤.有没有办法解决这个问题,而不涉及关闭global_xss_filtering?
解决方法:
Is there any way around this that does not involve turning global_xss_filtering off?
不,谢谢.您必须将其关闭,因为它会在CI执行的早期更改原始发布数据.
关于正确使用xss过滤器,我可能会咆哮5页,但我会尽量保持简洁:
>过滤输出,而不是输入
>始终牢记上下文并妥善逃避(这是HTML?sql?javascript?文本文件?)
>全局过滤器是安全毯.一旦你知道自己在做什么,就可以删除它.
这里只是为什么全局XSS过滤器是一个坏主意的许多悲剧性例子之一:
>用户注册帐户,并将其密码设置为document.write123
>您处理密码,最后散列字符串[已删除] 123
>现在,用户可以使用以下任何密码登录,因为在您对其进行哈希验证之前,这些密码也会被过滤器变为[已删除] 123:
>< script> 123
> document.write123
> document.cookie123
>等等……