CodeIgniter 为 XSS 过滤提供了几个方便的 API。
- config.php 中的“global_xss_filtering”。
- 使用表单验证库时,单个字段的“xss_clean”规则。
如果使用此功能,是否避免在输出字段时需要转义字段?
CodeIgniter 为 XSS 过滤提供了几个方便的 API。
如果使用此功能,是否避免在输出字段时需要转义字段?
在某些情况下 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;它只是在某些情况下产生了意想不到的结果。例如,如果您尝试&
在 3.0-dev 中输入文字“”,然后表单验证失败,则字段值将更改为&
没有警告。此更改是为了解决双重转义问题(issue 1953)。