我正在使用最近从 1.1 升级到 2.5 的应用程序。
我一直认为带有文本框和文本区域的本机 cakephp 行为是从输入中去除 html 标签。
最近我们发现这个应用程序没有发生这种情况。
所以我的问题是这个。我最初的假设是否不正确,并且 cake 默认情况下不处理这个问题,我们需要自己明确地这样做。或者是否可以关闭它,也许这就是这里发生的事情,我在哪里可以找到这个?做了一些搜索,包括蛋糕网站,但一直被提到在 2.3 中已弃用的蛋糕消毒实用程序
非常感谢任何帮助或指导。
我正在使用最近从 1.1 升级到 2.5 的应用程序。
我一直认为带有文本框和文本区域的本机 cakephp 行为是从输入中去除 html 标签。
最近我们发现这个应用程序没有发生这种情况。
所以我的问题是这个。我最初的假设是否不正确,并且 cake 默认情况下不处理这个问题,我们需要自己明确地这样做。或者是否可以关闭它,也许这就是这里发生的事情,我在哪里可以找到这个?做了一些搜索,包括蛋糕网站,但一直被提到在 2.3 中已弃用的蛋糕消毒实用程序
非常感谢任何帮助或指导。
您指的是数据清理。
在 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
在不知道您正在清理的表单的性质的情况下,我无法推荐解决方案。最安全的方法是去除除标点符号之外的所有非字母数字字符。
根据您需要查看的卫生水平HtmlPurifier。要么直接使用 lib,要么使用CakePHP 的这个插件。它也处理 XSS。
HtmlPurifier 可以配置为非常具体地过滤 HTML。例如,您可以允许<a>
但不允许除 src 或仅 id 之外的任何其他属性。