【发布时间】:2013-11-01 06:40:24
【问题描述】:
我在 cakephp 中开发了一个应用程序,我发现我的应用程序中存储了 XSS 攻击。为了处理这种攻击,我在我的应用程序中添加了Sanitizing::clean,它将特殊字符转换为 HTML 代码。
但是,当在链接$this->Html->link 中使用任何经过清理的字符串时,由于 cakephp 中的默认 escape=true,该字符串会再次被编码。 < 变成 &:lt 导致 < 而不仅仅是
可能的解决方案是在$this->Html->link 中添加escape=false,但我已经创建了应用程序,所以html->link 存在的地方太多了,所以到处去改变不会很有效。
如果还有其他解决方案,请帮忙??
【问题讨论】:
-
你的方法是错误的。不要使用 Sanitize 类。只需改用
h()。见cakephp-security -
我也使用了 h() ......仍然发生同样的事情。由于 escape = true 的默认行为,在 $this->Html->link 中使用该编码文本时,特殊字符将再次被编码。
-
stackoverflow.com/questions/6786789/… 许多人似乎同意最好存储不干净的数据,然后确保永远不会显示它。 Html Helper 上的默认转义设置将处理链接上的跨站点脚本问题。