为什么CodeIgniter的XSS过滤器只通过特定事物的正则表达式做出反应,而不是首先清理所有输入,无论内容是否被污染?另外,为什么在输入期间而不是在输出上完成(就像它应该是?)
为什么CodeIgniter的XSS过滤器只通过特定事物的正则表达式做出反应,而不是首先清理所有输入,无论内容是否被污染?
这没有多大意义.如果不事先检查,我们如何判断某些东西是否"被污染"?
根据CI的定义xss_clean(),我们并不总是想要消毒输入.正如您所提到的,重要的是输出 - 这就是我们需要注意XSS atacks的地方.如果我们总是使用CI 来 "清理"输入xss_clean(),那么我将如何能够在我的博客上发布javascript或PHP代码示例,或者让用户在评论中执行此操作?它最终会得到[removed].
另外,为什么在输入期间而不是在输出上完成(就像它应该是?)
你必须启用全局XSS过滤器在你的CI配置,这将运行选项xss_clean()上$_POST,$_GET和$_COOKIE你之前自动数据可以让您的双手就可以了.这是保护您自己的最低级别,可以选择始终清除数据.例如:
// With the Input class on $_POST data
$this->input->post('username', TRUE); // Second parameter runs xss_clean
// Using the Security class on any data
$this->security->xss_clean($username);
// Using the Form Validation class to automatically clean the input
$this->form_validation->set_rules('username', '', 'xss_clean');
Run Code Online (Sandbox Code Playgroud)
因为您仍然可以简单地使用$_POST['username'],通过启用全局过滤器,它已经为您进行了xss_cleaned.这是一种懒惰的方式,不幸的是,一旦清理了全局变量,就无法撤消它.
如果您已经知道XSS攻击何时何地发生 - 如果您愿意,可以轻松使用该功能.请记住,这并不会魔术般地把所有数据"安全",它只是避免一些更多的恶意代码注入的.一些更无害的东西</div>会越过这个过滤器.您应始终以适当的方式明确清理输入,以用于使用它的上下文.
| 归档时间: |
|
| 查看次数: |
3383 次 |
| 最近记录: |