【发布时间】:2014-02-17 07:12:04
【问题描述】:
Illuminate\Database\Eloquent\Model的fill方法用于批量赋值,由模型构造函数调用,而模型构造函数又由create方法调用。
如果在输入数组中找到一个或多个 "guarded" 属性,为什么它不会抛出任何异常?相反,它只是忽略它们并继续设置“可填充”的。仅当模型“完全受保护”(即没有可填充的属性)时才会引发异常。
假设即使在不应该出现的地方发现了一个受保护的属性:这还不够可疑,至少可以报告给管理员吗?
目前,如果我想审核这种情况并可能取消操作,我必须在批量分配之前自己检查输入:这应该如何有意义?
【问题讨论】:
-
他们描述它的方式似乎是 Laravel 代码(架构)的一部分,所以也许 Stackoverflow 不适合提及它。但是,也许您可以扩展 Eloquent 模型类并覆盖此行为?
-
实际上可以覆盖
fill方法这一事实是毫无疑问的。我在这里问是因为我想了解我是否只是遗漏了一些东西:在我看来,预定义的行为与“可填充/保护”系统的目标有些不一致,但这并不意味着它不是合理。 -
我不认为这是“不一致的”。这是一个设计决定,或者可能只是仍然缺少的东西。 L4.1 并不完美。
-
这就是重点:如果这是一个设计决策,那么我肯定会遗漏一些东西,因为它似乎与防止安全威胁的目标不一致。如果它只是仍然缺少的东西,很好,但我认为它应该记录在某个地方。
标签: php security laravel mass-assignment