0

从去年开始,我在 Kohan 3.0.7 中从事一个维护项目。当我在寻找最新版本(3.2)时,我遇到了我在使用 Kohana 3.0.7 时没有注意到的 ORM 验证。在我的项目中,我使用了表单验证并验证了模型中的所有表单。在阅读http://kohanaframework.org/3.2/guide/orm/examples/validation时,我发现控制器本身中添加了额外字段“确认密码”的验证规则。所以,我想知道——

我们可以将 ORM 验证规则完全移动到模型文件中吗?如果我们可以那么怎么做呢?

values方法是否处理 sql 注入?

4

1 回答 1

1

您不能也不应该将模型验证移至控制器。
在您提供的示例中,他们使用了所谓的“额外验证”。
看一下 save方法 APIValidation - 它采用稍后在方法中使用的可选参数check来验证其他逻辑(例如密码匹配)。
原因是您的模型中没有名为“password_matching”的字段(那么您可以在rules函数中编写此规则;)),因此您需要对这种情况使用外部验证。
使用外部验证的另一个示例是上传文件,并根据上传结果对您的 ORM 模型执行操作。

是的,ORM 是 SQL 注入安全的,因为它使用Query Builder它也是安全的(除了DB::expr应该特别小心使用)。

于 2012-06-25T14:23:04.330 回答