【问题标题】:How exactly does attr_accessible protects the db?attr_accessible 究竟如何保护数据库?
【发布时间】:2012-08-26 22:38:55
【问题描述】:

在过去的 4 个小时里,我一直在尝试学习 attr_accessible for rails(我是一个正在尝试学习 rails 的新手)。每一篇文档/文章都关注 attr_accessible 如何防止某些属性被批量分配修改。很好,但没有人费心解释它在其他情况下如何保护数据库。

例如,我假设在提交表单以创建模型时发生批量分配。所以在本书的这个例子中,通过在 routes.rb 中声明这个

resources :users

我使使用 REST 轻松创建/检索/更新/删除成为可能。我假设批量分配发生在创建中。并且使某些属性不可访问是有道理的。但是更新呢? attr_accessible 没有说任何关于单一分配的事情。因此,任何用户都可以发起 POST 调用来更新任何特定字段。我错过了什么?

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.1


    【解决方案1】:

    http://guides.rubyonrails.org/security.html#mass-assignment

    因此,任何用户都可以发起 POST 调用来更新任何特定字段。我错过了什么?

    您错过了 CSRF 保护。

    【讨论】:

      【解决方案2】:

      似乎没有遗漏任何东西。最常见的例子是这样的:

      如果您有一个“类型”或“访问权限”列来控制谁是管理员,谁不是管理员,并且您不保护它,我可以使用 CURL 将自己创建为具有完全权限的管理员。

      【讨论】:

        猜你喜欢
        • 2011-04-20
        • 2013-02-17
        • 1970-01-01
        • 2021-01-14
        • 2021-09-09
        • 1970-01-01
        • 2019-12-04
        • 1970-01-01
        • 2018-08-28
        相关资源
        最近更新 更多