【发布时间】:2012-03-03 22:17:47
【问题描述】:
$this->input->post('question', TRUE)
即使我添加了 TRUE,它仍然允许人们添加 html 代码。这是为什么呢?
【问题讨论】:
标签: php codeigniter
$this->input->post('question', TRUE)
即使我添加了 TRUE,它仍然允许人们添加 html 代码。这是为什么呢?
【问题讨论】:
标签: php codeigniter
xss_clean() 函数不会删除所有 HTML,它会删除/替换被认为是危险的特定内容,例如 <script> 标记。
http://codeigniter.com/user_guide/libraries/security.html
XSS 过滤器查找常用技术来触发 Javascript 或其他类型的代码,这些代码试图劫持 cookie 或执行其他恶意操作。如果遇到任何不允许的情况,则可以通过将数据转换为字符实体来使其安全。
有人将<p> 标记注入您的页面,虽然可能不是我们想要的,但并不是真正有效的攻击。你必须指定你想用它做什么。在许多情况下,您会想要已被xss_clean()ed 的 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);
【讨论】:
html_escape() 本身就足够了。 xss_clean() 如果您想获得实际的 HTML 输出,但过滤掉潜在的危险部分,这将是必要的。
xss_clean() 的帖子:stackoverflow.com/a/5346696/398242 请记住,转义/编码输出始终取决于上下文 - 没有一种工具可以处理每项工作以确保您的安全。