【发布时间】:2013-08-06 23:58:39
【问题描述】:
是否有禁用使用强参数的方法?
我知道这是一个安全漏洞,但我真的不需要它/想要它。
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-4 strong-parameters
是否有禁用使用强参数的方法?
我知道这是一个安全漏洞,但我真的不需要它/想要它。
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-4 strong-parameters
关闭属性保护几乎总是一个坏主意。
去掉那个强制说明,下面是关闭它的方法:
config.action_controller.permit_all_parameters = true
把它放在config/application.rb
【讨论】:
我在尝试存储来自 Stripe 的 webhook 的所有参数时遇到了这个问题。
如果你想允许单个实例的所有参数,你可以在你的 params 对象上调用#to_hash,然后再将它传递给你的初始化方法。
例如:
@my_object = MyObject.new(params[:my_object].to_hash)
【讨论】:
如果“禁用”是指回退到 Rails 3 风格的 attr_accessible 行,那么可以。
只需使用protected_attributes gem。
【讨论】:
我不这么认为。
DHH cmetshere on this pull request to add a disable switch to strong parameters
无论如何,所有这些都是遗留问题,因为 Rails 4.0 将强制每个人都使用强参数,而您将无法将其关闭。
【讨论】:
要停止为您的应用程序检查被禁止的属性,您可以修补检查..
例如把下面的代码放在
config/initializers/disable_strong_parameters.rb
module ActiveModel
module ForbiddenAttributesProtection
protected
def sanitize_for_mass_assignment(attributes)
attributes
end
alias :sanitize_forbidden_attributes :sanitize_for_mass_assignment
end
end
【讨论】:
当然可以!根据 Strong Parameters 的官方文档(https://github.com/rails/strong_parameters),您可以通过将以下代码添加到您的 config/application.rb 来禁用:
config.active_record.whitelist_attributes = false
它在 Rails 3.2 中对我有用
【讨论】: