如何保护质量分配的属性

时间:2012-03-07 04:09:24

标签: ruby-on-rails-3 mass-assignment

嗨我有一个NOOB问题,因为Rails中的安全漏洞导致他们的应用程序被利用,GITHUB发生了什么。

在Rails中保护对象属性的最佳方法是什么,但仍允许在适用的情况下为它们分配值?

由于

1 个答案:

答案 0 :(得分:2)

实际上Rails 3.1添加了新的内置方法来处理带有角色的质量分配,这可能是你想要看的东西。

发行说明here

基本上它的工作原理如下:

class User < ActiveRecord::Base
  attr_accessible :name
  attr_accessible :name, :role, :as => :admin
end

这使您可以使用以下方式允许用户在您的某个控制器中更新自己的信息:

@user.update_attributes(params[:user])

并且该用法永远不会更新User模型中的:role属性。但是当您的管理员用户在单独的控制器中管理角色时,您可以使用以下语法:

@user.update_attributes(params[:user], :as => :admin)

这样也可以更新:role属性