【问题标题】:No secret option provided to Rack::Session::Cookie warning?没有向 Rack::Session::Cookie 警告提供秘密选项?
【发布时间】:2012-04-29 18:41:21
【问题描述】:

我在 Fedora 17 下运行 Rails 3.2.3、Ruby 1.9。当我运行 rails s 时收到此警告,我该如何解决?

安全警告:没有为 Rack::Session::Cookie 提供秘密选项。 这构成了安全威胁。强烈建议您 提供秘密以防止可能被精心设计的漏洞利用 饼干。未来版本的 Rack 将不支持此功能,并且 未来的版本甚至会使您现有的用户 cookie 失效。

【问题讨论】:

  • config/initializers/secret_token.rb 中是否设置了值?
  • Kashyap - 是的,设置了一个值。
  • 在将 Rails 从 3.2.9 升级到 3.2.10 后,我收到了同样的警告
  • 实际上这个警告是在昨天(2013 年 1 月 6 日)在 ruby​​gems.org 上发布的 Rack 1.4.2 中添加的,但实际提交是在 2012 年 3 月 18 日完成的。
  • 是的,今天我也收到了这样的警告

标签: ruby-on-rails ruby-on-rails-3.2


【解决方案1】:

这是一个 Rails 错误,因为子类违反了超类 API 合同。

Rails 用户可以安全地忽略该警告。

(https://github.com/rack/rack/issues/485#issuecomment-11956708,已添加重点)

确认 Rails 错误讨论:https://github.com/rails/rails/issues/7372#issuecomment-11981397

【讨论】:

  • 更新您的 rails gems,因为它被反向移植到所有支持的 rails gems。注意@henrik-n
【解决方案2】:

阅读基于 tehgeekmeisters 回答的讨论,此警告正在弹出,因为 Rails 以与预期不同的方式使用 Rack cookie。在就如何处理此问题和解决方案达成最终协议之前,暂时忽略此警告应该是可以的。

【讨论】:

    【解决方案3】:

    这个问题已经在刚刚发布的 Rails 3.2.11 中得到解决。

    日志:https://github.com/rails/rails/commits/v3.2.11

    提交:https://github.com/rails/rails/commit/95fe9ef945a35f56fa1c3ef356aec4a3b868937c

    【讨论】:

    • @Dreyfuzz 请注意,3.2.11 晚于 3.2.2(因为它是 11,而不是 1.1)。因此,只需升级 Rails 就可以解决您的问题。
    • 是的,由于某种原因,我一直在思考 3.2.2 与 3.2.20 相同的十进制表示法。以为我在那一分钟处于最前沿!
    【解决方案4】:

    rails 3.2.9 - ruby​​ 1.9.3p125(2012-02-16 修订版 34643)[i686-linux]

    大家好,以下对我有用,它可能对你有用。


    /usr/local/lib/ruby/gems/1.9.1/gems/actionpack-3.2.9/lib/action_dispatch/middleware/session/abstract_store.rb
    module Compatibility
              def initialize(app, options = {})
                options[:key]     ||= '_session_id'
                #fixed warning - SECURITY WARNING: No secret option provided to Rack::Session::Cookie.
                options[:secret] ||= Rails.application.config.secret_token
                super
              end
        end
    

    【讨论】:

    • 这是“赞成票”最少的答案,但实际上解决了问题的唯一答案,没有降级,并且存在兼容性问题。它只是清除烦人的消息
    • 而不是修补 Rails 代码。我认为这最好在发布中解决。升级到 3.2.11 比修改 rails 代码要好。
    【解决方案5】:

    现在降级到机架 1.4.1 应该足以解决这个问题。 这里有an issue open,我刚刚提交了一个pull request,似乎可以为我解决这个问题。无论如何,请注意问题,修复后您应该可以升级到机架 1.4.2。

    显然,正在讨论如何在另一个 issue 上解决此问题。您必须降级到 1.4.1,忽略它,或者找出您自己的修复方法,直到这个问题得到处理(如果发生这种情况,还要进行反向移植)。

    【讨论】:

      【解决方案6】:

      已在 Github https://github.com/rails/rails/issues/8789 中打开了一个问题。似乎是涉及带有 Rack 1.4.2 的 Rails 3.2.10 的错误导致了这种情况。 IMO,在问题解决之前可以放心地忽略它。

      编辑:此问题已在 Rails 3.2.11 中解决。

      【讨论】:

        【解决方案7】:

        rails更新到3.2.13,可以解决这个问题。

        【讨论】:

          猜你喜欢
          • 2013-08-05
          • 1970-01-01
          • 1970-01-01
          • 2020-12-04
          • 2012-11-14
          • 2017-07-13
          • 2013-08-22
          • 2021-12-29
          • 1970-01-01
          相关资源
          最近更新 更多