XSS_CLEAN在CodeIgniter中不起作用

goo*_*ing 4 php codeigniter

$this->input->post('question', TRUE)

即使我添加TRUE,它仍然允许人们添加HTML代码.这是为什么?

Wes*_*rch 5

xss_clean()函数不会删除所有 HTML,它会删除/替换被视为危险的特定内容,例如<script>标记.

http://codeigniter.com/user_guide/libraries/security.html

XSS过滤器查找常用技术来触发Javascript或其他类型的代码,这些代码试图劫持cookie或执行其他恶意攻击.如果遇到任何不允许的情况,则通过将数据转换为字符实体来使其安全.

有人<p>在您的页面中注入标记,虽然可能不需要,但实际上并不是一种有效的攻击.你必须指定你想用它做什么.在许多情况下,您将需要xss_clean()编辑的HTML输出.

这听起来像你想要的htmlspecialchars()strip_tags()(注意:这两个非常不同的东西).如果要对HTML进行编码,还可以使用CI html_escape():

echo html_escape($this->input->post('question'));
Run Code Online (Sandbox Code Playgroud)

如果您想要HTML输出而不是实体,只需单独使用XSS过滤器:

echo $this->input->post('question', TRUE);
echo xss_clean($user_input);
Run Code Online (Sandbox Code Playgroud)