【问题标题】:In Rails 4 disable Strong Parameters by default在 Rails 4 中默认禁用强参数
【发布时间】:2013-08-06 23:58:39
【问题描述】:

是否有禁用使用强参数的方法?

我知道这是一个安全漏洞,但我真的不需要它/想要它。

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-4 strong-parameters


    【解决方案1】:

    关闭属性保护几乎总是一个坏主意。

    去掉那个强制说明,下面是关闭它的方法:

    config.action_controller.permit_all_parameters = true
    

    把它放在config/application.rb

    【讨论】:

    • 刚刚尝试过,但它对我不起作用(在 Rails 4.0.0 应用上)。
    • 为我工作。同意 - 这通常是个坏主意 - 但我的用例是一个管理员站点,管理员可以在其中更改任何内容。
    • 它对我有用。请务必将这一行放在您的 Application 类中并重新启动 HTTP 服务器。
    • 在迁移旧版 (Rails 3.2) 应用程序并尝试让现有规范在迁移中作为第一遍工作时,此提示非常有用,然后再重新处理每个模型和控制器使用 Rails 4 中采用的新的质量分配保护方法。
    【解决方案2】:

    我在尝试存储来自 Stripe 的 webhook 的所有参数时遇到了这个问题。

    如果你想允许单个实例的所有参数,你可以在你的 params 对象上调用#to_hash,然后再将它传递给你的初始化方法。

    例如:

    @my_object = MyObject.new(params[:my_object].to_hash)
    

    【讨论】:

      【解决方案3】:

      如果“禁用”是指回退到 Rails 3 风格的 attr_accessible 行,那么可以。

      只需使用protected_attributes gem。

      【讨论】:

        【解决方案4】:

        我不这么认为。

        DHH cmetshere on this pull request to add a disable switch to strong parameters

        无论如何,所有这些都是遗留问题,因为 Rails 4.0 将强制每个人都使用强参数,而您将无法将其关闭。

        【讨论】:

          【解决方案5】:

          要停止为您的应用程序检查被禁止的属性,您可以修补检查..

          例如把下面的代码放在

          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
          

          【讨论】:

            【解决方案6】:

            当然可以!根据 Strong Parameters 的官方文档(https://github.com/rails/strong_parameters),您可以通过将以下代码添加到您的 config/application.rb 来禁用:

            config.active_record.whitelist_attributes = false
            

            它在 Rails 3.2 中对我有用

            【讨论】:

            • 这是禁用 protected_attributes
            猜你喜欢
            • 2013-12-07
            • 1970-01-01
            • 2014-05-24
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2018-08-31
            • 2013-01-22
            相关资源
            最近更新 更多