我在cakephp中开发了一个应用程序,我发现的是我的应用程序中存储的XSS攻击。为了处理这种攻击,我在我的应用程序中添加了将特殊字符转换为HTML代码的Sanitizing::clean
。
但是,当任何经过净化的字符串在链接中使用时$this->Html->link
,由于 cakephp 中的默认escape=true
,该字符串会再次编码。 <转动 &:lt 导致 <而不仅仅是<
可能的解决方案是在$this->Html->link
中添加escape=false
,但是我已经创建了应用程序,因此存在html->link
的地方太多,因此到处进行更改效率不高。
如果存在任何其他解决方案,请提供帮助?
创建一个自定义帮助程序,如 MyHtmlHelper
扩展HtmlHelper
并重写 link()
方法。
在控制器中包括使用别名功能(如 public $helpers = array('Html' => array('className' => 'MyHtmlHelper'));
),以便视图中的$this->Html
将使用自定义帮助程序的实例,并且不必对视图文件进行任何更改。