111

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

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

4

7 回答 7

86

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

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

https://github.com/rack/rack/issues/485#issuecomment-11956708,重点补充)

关于rails bug讨论的确认:https ://github.com/rails/rails/issues/7372#issuecomment-11981397

于 2013-01-08T04:06:44.170 回答
20

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

于 2013-01-07T07:47:20.590 回答
17

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

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

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

于 2013-01-08T20:44:25.077 回答
16

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
于 2013-02-12T10:52:23.387 回答
6

现在降级到机架 1.4.1 应该足以解决这个问题。 对此存在一个问题,我刚刚提交了一个似乎可以为我修复它的拉取请求。无论如何,请注意问题,在此问题修复后您应该能够升级到机架 1.4.2。

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

于 2013-01-07T06:50:28.297 回答
5

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

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

于 2013-01-08T15:07:43.453 回答
3

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

于 2013-03-25T02:52:42.173 回答