我正在使用最近从1.1升级到2.5的应用。
我一直认为带有文本框和文本区域的本地cakephp行为是从输入中删除html标记。
最近我们发现这个应用程序没有发生这种情况。
所以我的问题是这个。我的初始假设是不正确的,而且默认情况下cake不会处理这个问题,我们需要自己明确地做这个。或者是否有可能将其关闭,也许这就是在这里发生的事情,我会在哪里找到这个?做了一些搜索,包括蛋糕网站,但继续参考在2.3
中弃用的蛋糕的Sanitized Utility非常感谢任何帮助或指示。
答案 0 :(得分: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
如果不知道表格的性质,你正在消毒,我不可能推荐一个解决方案。最安全的方法是去除除标点符号之外的所有非字母数字字符。
答案 1 :(得分:0)
根据您需要的卫生水平,请查看HtmlPurifier。直接使用lib或this plugin用于CakePHP。它也会照顾XSS。
可以将HtmlPurifier配置为过滤非常具体的HTML。例如,您可以允许<a>
但不允许除src之外的任何其他属性或仅允许id。例如。