Codeigniter 3 - XSS过滤

时间:2017-09-30 20:20:34

标签: codeigniter xss codeigniter-3

我正在处理其他人构建的代码。我看到配置中的xss处于活动状态:

 global_xss_filtering = TRUE

我也看到这个已被弃用。我也在Input类中找到了:

$this->_enable_xss = (config_item('global_xss_filtering') === TRUE);
is_bool($xss_clean) OR $xss_clean = $this->_enable_xss;

这意味着如果在配置中激活“global_xss_filtering”,即使我在input-> post上关闭xss,它也将应用xss过滤。

这意味着我必须在配置上关闭它并使用

$this->securit->xss_clean($this->input->post())

我的问题如下:

  1. 如果没有通过$ this-> input-> post('variable')应用XSS,这是使用它而不是$ _POST的其他优点吗?

  2. 在Codeigniter 3中进行XSS过滤的正确方法是什么?

  3. 提前致谢。

2 个答案:

答案 0 :(得分:2)

  

在Codeigniter 3中进行XSS过滤的正确方法是什么?

开发社区目前的共识似乎是XSS过滤应该在输出而不是输入时完成。虽然输入和输出过滤器都有很强的论据和支持者。

这是一个庞大且有点复杂的话题。

找到你想知道的更多内容

https://www.dwheeler.com/secure-programs/Secure-Programs-HOWTO/cross-site-malicious-content.html

https://www.owasp.org/index.php/XSS_(Cross_Site_Scripting)_Prevention_Cheat_Sheet#Introduction

https://paragonie.com/blog/2015/06/preventing-xss-vulnerabilities-in-php-everything-you-need-know

在阅读并理解了所有这些内容之后,您可能会发现在输入和输出期间阻止XSS需要大量的思考和工作。

许多人建议不要使用Codeigniter的XSS功能,而是选择类似HTML Purifier的内容。

  

如果没有通过$ this-> input-> post(' variable')应用XSS,这是使用它而不是$ _POST的其他优点吗?

使用$this->input->post('variable')的主要优点是它会检查$_POST中是否存在索引('变量")。要直接使用$_POST,您确实应该确保该数组具有该索引。

if(isset($_POST['variable'])
{
  // do stuff with $_POST['variable']
  ...
}

如果没有isset测试,您将面临致命的运行时错误风险。因此,使用$this->input->post('variable')可以消除持续构建if阻止

的单调乏味

答案 1 :(得分:1)

在我2年前工作的项目http://conferience.com上,我们使用(d)html purifier来阻止xss攻击。此外,当需要明文输入时,我们只使用php的原生strip_tags方法对任何html字符串进行条带化。

因此我们设置以下设置:

$ global_xss_filtering = FALSE

并在$_POST['something'] / $this->input->post('something')输入上使用了手动处理。