1

CodeIgniter 为 XSS 过滤提供了几个方便的 API。

  • config.php 中的“global_xss_filtering”。
  • 使用表单验证库时,单个字段的“xss_clean”规则。

如果使用此功能,是否避免在输出字段时需要转义字段?

4

1 回答 1

4

在某些情况下 xss_clean 不会保护您。 问题 470包括此示例:

public function index()
{

    $name = $this->security->xss_clean('hover me" onmouseover=alert("XSS2") "'); 
    echo '</div>Name:<input value="'.$name.'">';
    echo '</body></html>';
}

开发人员的回应是这是设计使然,并建议$name应该使用form_prep().

如果您set_value('field-name', 'default')在表单验证失败时使用以保留用户输入),那将......尝试为您调用 form_prep() 。需要注意的是,如果您没有加载表单验证库,它不会转义“默认”参数。(问题 1781,在 3.0-dev 中修复)。

如果您正在运行当前的 3.0-dev,form_prep()则更具体地说明它转义了哪些字符。无论哪种方式,它都应该避免 XSS;它只是在某些情况下产生了意想不到的结果。例如,如果您尝试&amp;在 3.0-dev 中输入文字“”,然后表单验证失败,则字段值将更改为&没有警告。此更改是为了解决双重转义问题(issue 1953)。

于 2012-12-16T16:25:21.713 回答