0

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

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

resources :users

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

4

2 回答 2

1

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

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

你错过了 CSRF 保护。

于 2012-08-26T22:42:29.477 回答
0

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

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

于 2012-08-26T22:45:24.283 回答