2

我正在使用最近从 1.1 升级到 2.5 的应用程序。

我一直认为带有文本框和文本区域的本机 cakephp 行为是从输入中去除 html 标签。

最近我们发现这个应用程序没有发生这种情况。

所以我的问题是这个。我最初的假设是否不正确,并且 cake 默认情况下不处理这个问题,我们需要自己明确地这样做。或者是否可以关闭它,也许这就是这里发生的事情,我在哪里可以找到这个?做了一些搜索,包括蛋糕网站,但一直被提到在 2.3 中已弃用的蛋糕消毒实用程序

非常感谢任何帮助或指导。

4

2 回答 2

1

您指的是数据清理

在 CakePHP 1.x 中,它是通过一个辅助类来处理的。

http://book.cakephp.org/1.3/en/The-Manual/Common-Tasks-With-CakePHP/Data-Sanitization.html

对于控制器接收到的任何输入,数据清理从来都不是自动的或默认的,但是当您更新到 CakePHP 2.5 时,清理助手已被删除。所以你在迁移到 Cake 2.5 的过程中一定是在不知不觉中删除了它

http://book.cakephp.org/2.0/en/core-utility-libraries/sanitize.html

它被删除的原因是它不安全并且很容易被黑客绕过。CakePHP 1.x 站点容易受到 XSS 攻击。

http://en.wikipedia.org/wiki/Cross-site_scripting

在您可以安全地执行表单数据清理之前。您应该知道黑客绕过输入过滤以注入不需要的数据是多么容易。

https://www.owasp.org/index.php/XSS_(Cross_Site_Scripting)_Prevention_Cheat_Sheet

在不知道您正在清理的表单的性质的情况下,我无法推荐解决方案。最安全的方法是去除除标点符号之外的所有非字母数字字符。

于 2014-09-18T15:21:09.883 回答
0

根据您需要查看的卫生水平HtmlPurifier。要么直接使用 lib,要么使用CakePHP 的这个插件。它也处理 XSS。

HtmlPurifier 可以配置为非常具体地过滤 HTML。例如,您可以允许<a>但不允许除 src 或仅 id 之外的任何其他属性。

于 2014-09-18T15:53:48.557 回答