我在cakephp中开发了一个应用程序,我发现在我的应用程序中存储的XSS攻击。为了处理这种攻击,我在我的应用程序中添加了Sanitizing::clean
,它将特殊字符转换为HTML代码。
但是当链接$this->Html->link
中使用了任何已清理的字符串时,由于cakephp中的默认escape=true
,该字符串会再次被编码。 & lt turns& amp:lt导致& lt而不是<
可能的解决方案是在escape=false
中添加$this->Html->link
,但我创建了应用程序,因此存在html->link
存在的地方太多,因此无法进行更改无处不在。
如果还有其他解决方案,请帮忙吗?
答案 0 :(得分:2)
制作MyHtmlHelper
之类的自定义帮助程序,扩展HtmlHelper
并覆盖link()
方法。
在你的控制器中包括使用像public $helpers = array('Html' => array('className' => 'MyHtmlHelper'));
这样的别名功能,这样你在视图中的$this->Html
将使用你的自定义助手的实例,你不必在视图文件中进行任何更改。