【问题标题】:CakePHP : Prevent XSS attacksCakePHP:防止 XSS 攻击
【发布时间】:2013-11-01 06:40:24
【问题描述】:

我在 cakephp 中开发了一个应用程序,我发现我的应用程序中存储了 XSS 攻击。为了处理这种攻击,我在我的应用程序中添加了Sanitizing::clean,它将特殊字符转换为 HTML 代码。

但是,当在链接$this->Html->link 中使用任何经过清理的字符串时,由于 cakephp 中的默认 escape=true,该字符串会再次被编码。 &lt 变成 &amp:lt 导致 &lt 而不仅仅是

可能的解决方案是在$this->Html->link 中添加escape=false,但我已经创建了应用程序,所以html->link 存在的地方太多了,所以到处去改变不会很有效。

如果还有其他解决方案,请帮忙??

【问题讨论】:

  • 你的方法是错误的。不要使用 Sanitize 类。只需改用h()。见cakephp-security
  • 我也使用了 h() ......仍然发生同样的事情。由于 escape = true 的默认行为,在 $this->Html->link 中使用该编码文本时,特殊字符将再次被编码。
  • stackoverflow.com/questions/6786789/… 许多人似乎同意最好存储不干净的数据,然后确保永远不会显示它。 Html Helper 上的默认转义设置将处理链接上的跨站点脚本问题。

标签: php cakephp xss


【解决方案1】:

制作一个像 MyHtmlHelper 这样的自定义助手,它扩展 HtmlHelper 并覆盖 link() 方法。

在您的控制器中包括使用别名功能,如 public $helpers = array('Html' => array('className' => 'MyHtmlHelper'));,这样您的视图中的 $this->Html 将使用您的自定义助手实例,您不必对视图文件进行任何更改。

【讨论】:

    猜你喜欢
    • 2022-01-08
    • 1970-01-01
    • 1970-01-01
    • 2023-03-04
    • 1970-01-01
    • 1970-01-01
    • 2018-07-16
    相关资源
    最近更新 更多