我从食谱中读到(第 4.2 节)
如果您使用 CakePHP 的 ORM 方法(例如 find() 和 save())和适当的数组表示法(即 array('field' => $value))而不是原始 SQL,CakePHP 已经保护您免受 SQL 注入。对于 XSS 的清理,通常最好将原始 HTML 保存在数据库中而不进行修改,并在输出/显示时清理。
那么我们确定我们永远不需要针对 SQL 手动清理用户数据,只要我们限制为 find() 和 save() 等方法吗?特别是,如果我直接从 $_POST 而不是从 $this->data 获取数据,这是真的吗?换句话说,假设我使用 $this->data 进行 find() 查询。那么在编写数组 $this->data 或编写 find() 查询时,CakePHP 会针对 SQL 进行清理吗?
我的第二个问题是对要显示的数据进行清理。Sanitize::html 是幂等的吗?那么,我可以在我的 beforeSave() 方法中使用它,还是在我第二次保存时它会中断,因为它会再次应用并给出新的结果?