XSS_CLEAN在CodeIgniter中不起作用

时间:2012-03-03 22:17:48

标签: php codeigniter

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

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

1 个答案:

答案 0 :(得分:5)

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

  

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

     

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

有人在您的网页中注入<p>标记,虽然可能不需要,但并不是真正有效的攻击。你必须指定你想用它做什么。在许多情况下,您想要已经xss_clean()编辑的HTML输出。

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

echo html_escape($this->input->post('question'));

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

echo $this->input->post('question', TRUE);
echo xss_clean($user_input);