Brakeman Gem 在 model.new 和 model.update_attibutes 和 model.create 中抛出质量分配错误警告
False Warning for mass assignment is thrown by Brakeman Gem in model.new and model.update_attibutes and model.create
批量赋值是 Rails 的一项功能,它允许应用程序根据散列值创建记录。可能会出现两种不同的质量分配警告。第一个是批量分配实际发生的时间。示例:-
User.new(params[:user])
尽管我没有直接使用散列来映射 table 中可用的字段。相反,我正在做类似的事情:
User.new(:first_name => params[:first_name], :last_name => params[:last_name ], :address => params[:address])
或
user.update_attributes(:first_name => params[:first_name], :last_name => params[:last_name ], :address => params[:address])
为什么这会导致批量分配漏洞?由于我不是盲目分配哈希值,因此我只选择性地更新 table.
的少数属性
解决此问题的方法是执行以下操作:
user = User.new
user.first_name = params[:first_name]
user.last_name = params[:last_name ],
user.address = params[:address]
user.save
但这就像编写了不必要的代码,所以 Brakeman 没有将此作为问题发出警报。这实际上是在 4 行而不是一行中做同样的事情。
有人可以让我了解这里的实际问题是什么,或者确认这是一个错误警报,还有什么方法可以防止这个错误警报出现?
我正在使用 ruby 1.8.7,Rails 2.3.2,Brakeman 3.0.5
由于 accepts_nested_attributes_for
,可能存在值的批量分配问题。但是,如果您没有使用 accepts_nested_attributes_for
那么这可能是误报。
通知 Brakeman returns 此代码的 "weak" 置信度警告。与 Brakeman 的大多数 "weak" 信心警告一样,您应该查看该代码,但可能不是问题。
您可以使用 Brakeman's ignore configuration 来忽略误报。您还可以忽略 运行 Brakeman 和 -w 2
发出的弱信心警告。也可以使用 -x MassAssignment
关闭批量分配警告,但我不建议这样做,因为你 运行 是 Rails.
的一个古老(并且可能非常脆弱)的版本
批量赋值是 Rails 的一项功能,它允许应用程序根据散列值创建记录。可能会出现两种不同的质量分配警告。第一个是批量分配实际发生的时间。示例:-
User.new(params[:user])
尽管我没有直接使用散列来映射 table 中可用的字段。相反,我正在做类似的事情:
User.new(:first_name => params[:first_name], :last_name => params[:last_name ], :address => params[:address])
或
user.update_attributes(:first_name => params[:first_name], :last_name => params[:last_name ], :address => params[:address])
为什么这会导致批量分配漏洞?由于我不是盲目分配哈希值,因此我只选择性地更新 table.
的少数属性解决此问题的方法是执行以下操作:
user = User.new
user.first_name = params[:first_name]
user.last_name = params[:last_name ],
user.address = params[:address]
user.save
但这就像编写了不必要的代码,所以 Brakeman 没有将此作为问题发出警报。这实际上是在 4 行而不是一行中做同样的事情。
有人可以让我了解这里的实际问题是什么,或者确认这是一个错误警报,还有什么方法可以防止这个错误警报出现?
我正在使用 ruby 1.8.7,Rails 2.3.2,Brakeman 3.0.5
由于 accepts_nested_attributes_for
,可能存在值的批量分配问题。但是,如果您没有使用 accepts_nested_attributes_for
那么这可能是误报。
通知 Brakeman returns 此代码的 "weak" 置信度警告。与 Brakeman 的大多数 "weak" 信心警告一样,您应该查看该代码,但可能不是问题。
您可以使用 Brakeman's ignore configuration 来忽略误报。您还可以忽略 运行 Brakeman 和 -w 2
发出的弱信心警告。也可以使用 -x MassAssignment
关闭批量分配警告,但我不建议这样做,因为你 运行 是 Rails.