CodeIgniter输入过滤

时间:2012-03-12 21:08:43

标签: php codeigniter xss

我正在撰写一本书籍列表网站,并且遇到了codeigniter的xss过滤问题。提交表单以创建列表时,包含“Javascript:”的任何标题都将替换为“[REMOVED]”。我试过从POST数组中访问数据,如下所示:

$title = $_POST['title'];

避免使用Input类,但它仍然以某种方式被过滤。有没有办法解决这个问题,而不涉及关闭global_xss_filtering?

1 个答案:

答案 0 :(得分:9)

  

有没有办法解决这个问题,而不涉及关闭global_xss_filtering?

不,抱歉。您必须将其关闭,因为它会在CI执行的早期更改原始发布数据。

关于正确使用xss过滤器,我可能会咆哮5页,但我会尽量保持简洁:

  • 过滤输出,而不是输入
  • 始终牢记上下文并妥善逃避(这是HTML?SQL?javascript?文本文件?)
  • 全局过滤器是安全毯。一旦你知道自己在做什么,就可以删除它。

这里只是为什么全局XSS过滤器是个坏主意的许多悲剧性例子之一:

  • 用户注册一个帐户,并将其密码设置为document.write123
  • 您处理密码,最后散列字符串[removed]123
  • 现在,用户可以使用以下任何密码登录,因为在您对其进行哈希验证之前,这些密码也会被过滤器变为[removed]123

    • <script>123
    • document.write123
    • document.cookie123
    • 诸如此类...

不应该发生。用户不应该使用多个密码登录(除非是设计......我猜)。

另外,祝您使用<iframe> ... YouTube视频的任何博客文章都好运。