Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 什么';s在Rails中的质量分配,是否需要特殊名称?_Ruby On Rails_Security - Fatal编程技术网

Ruby on rails 什么';s在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

我不知道术语“质量分配”是否是Rails特有的,但我得到了一个基本想法,即质量分配是指当你用相同的方法给一堆变量赋值时


这是一个正确的定义吗?为什么会有一个特殊的名称?

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])
所以是的,它是一种用一种方法设置很多变量的方法