Ruby on rails 什么';s在Rails中的质量分配,是否需要特殊名称?
我不知道术语“质量分配”是否是Rails特有的,但我得到了一个基本想法,即质量分配是指当你用相同的方法给一堆变量赋值时Ruby on rails 什么';s在Rails中的质量分配,是否需要特殊名称?,ruby-on-rails,security,Ruby On Rails,Security,我不知道术语“质量分配”是否是Rails特有的,但我得到了一个基本想法,即质量分配是指当你用相同的方法给一堆变量赋值时 这是一个正确的定义吗?为什么会有一个特殊的名称?ActiveRecord的一些默认行为容易受到攻击。特别是,从用户提交的表单中自动更新属性。我的猜测是,术语“批量更新”已经作为一个句柄普及,用来讨论这个ActiveRecord功能的便利性和漏洞。Rails中的批量分配是当您使用类似于User.new(:name=>“David”,:occulation=>“code Artis
这是一个正确的定义吗?为什么会有一个特殊的名称?ActiveRecord的一些默认行为容易受到攻击。特别是,从用户提交的表单中自动更新属性。我的猜测是,术语“批量更新”已经作为一个句柄普及,用来讨论这个ActiveRecord功能的便利性和漏洞。Rails中的批量分配是当您使用类似于
User.new(:name=>“David”,:occulation=>“code Artist”)
的东西来一次性设置一行的所有值时。当您将此代码更改为更像User.new(params[:User])
时,就会出现危险。现在,最终用户有可能恶意创建散列,将散列作为参数传递给user.new
,并设置您不期望的变量。因此,需要attr\u accessible
和attr\u protected
,这限制了最终用户设置不应直接影响的字段的能力。基本上,在没有批量分配的情况下,您可以创建如下模型:
user = User.new
user.first_name = params[:user][:first_name]
user.last_name = params[:user][:last_name]
有了批量分配,模型本身就会知道如何调用这些设置器,而您所需要做的就是
user = User.new(params[:user])
所以是的,它是一种用一种方法设置很多变量的方法