attr_accessible究竟是如何保护数据库的呢?

时间:2012-08-26 22:38:56

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

我花了最后4个小时试图学习attr_accessible for rails(我现在是一个尝试学习rails的新手)。每个文档/文章都关注attr_accessible如何防止某些属性被质量赋值修改。很好,但没有人打算解释它在其他情况下如何保护数据库。

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

resources :users

我已经可以使用REST轻松创建/检索/更新/删除。我假设大规模任务发生在创造中。并且使某些属性不可访问是有道理的。但是更新怎么样? attr_accessible没有说明单一的任务。因此,任何用户都可以发起POST调用以更新任何特定字段。我错过了什么?

2 个答案:

答案 0 :(得分:1)

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

  

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

您错过了CSRF保护。

答案 1 :(得分:0)

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

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