我从食谱中读到(第4.2节)
如果您使用CakePHP的ORM方法(例如find()和save())和正确的数组表示法(即数组('field'=> $ value))而不是原始SQL,CakePHP已经保护您免受SQL注入.对于针对XSS的清理,通常更好的是将原始HTML保存在数据库中而不进行修改并在输出/显示时进行清理.
因此,我们确定我们不需要针对SQL手动清理用户数据,前提是我们限制使用find()和save()等方法吗?特别是,如果我直接从$ _POST获取数据而不是从$ this-> data获取数据,这是真的吗?换句话说,假设我使用$ this-> data进行find()查询.然后CakePHP在编写数组$ this-> data或编写find()查询时对SQL进行清理?
我的第二个问题是清理要显示的数据.是Sanitize :: html幂等吗?那么,我可以在我的beforeSave()方法中使用它,还是会在第二次保存时中断,因为它再次应用并提供新的结果?
关于这个问题:
编写数组$ this-> data或编写find()查询时,CakePHP是否对SQL进行清理?
Cakephp不会清理控制器中的$ this->数据,如果你检查蛋糕代码,在Dispatcher :: parseParams()http://api13.cakephp.org/view_source/dispatcher/#line-244你会看到将$ _POST复制到控制器数据,不对值进行清理.
但是,建议不要使用$ _POST,因为在使用表单助手时,您将失去所有蛋糕的魔力