$this->input->post('question', TRUE)
即使我添加TRUE,它仍然允许人们添加HTML代码。那是为什么?
答案 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);