【问题标题】:Laravel mass assignment security policyLaravel 批量分配安全策略
【发布时间】:2014-02-17 07:12:04
【问题描述】:

Illuminate\Database\Eloquent\Modelfill方法用于批量赋值,由模型构造函数调用,而模型构造函数又由create方法调用。
如果在输入数组中找到一个或多个 "guarded" 属性,为什么它不会抛出任何异常?相反,它只是忽略它们并继续设置“可填充”的。仅当模型“完全受保护”(即没有可填充的属性)时才会引发异常。

假设即使在不应该出现的地方发现了一个受保护的属性:这还不够可疑,至少可以报告给管理员吗?
目前,如果我想审核这种情况并可能取消操作,我必须在批量分配之前自己检查输入:这应该如何有意义?

【问题讨论】:

  • 他们描述它的方式似乎是 Laravel 代码(架构)的一部分,所以也许 Stackoverflow 不适合提及它。但是,也许您可​​以扩展 Eloquent 模型类并覆盖此行为?
  • 实际上可以覆盖fill 方法这一事实是毫无疑问的。我在这里问是因为我想了解我是否只是遗漏了一些东西:在我看来,预定义的行为与“可填充/保护”系统的目标有些不一致,但这并不意味着它不是合理。
  • 我不认为这是“不一致的”。这是一个设计决定,或者可能只是仍然缺少的东西。 L4.1 并不完美。
  • 这就是重点:如果这是一个设计决策,那么我肯定会遗漏一些东西,因为它似乎与防止安全威胁的目标不一致。如果它只是仍然缺少的东西,很好,但我认为它应该记录在某个地方。

标签: php security laravel mass-assignment


【解决方案1】:

最后,在some discussion 之后,似乎真的只是一个我不太同意的设计决定

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-07-18
    • 1970-01-01
    • 1970-01-01
    • 2015-11-06
    • 2019-11-26
    • 1970-01-01
    • 2017-06-11
    • 2019-09-24
    相关资源
    最近更新 更多