我在 Fedora 17 下运行 Rails 3.2.3、Ruby 1.9。我在运行时收到此警告,我rails s
该如何解决?
安全警告:没有为 Rack::Session::Cookie 提供秘密选项。这构成了安全威胁。强烈建议您提供一个秘密,以防止可能来自精心制作的 cookie 的漏洞利用。未来版本的 Rack 将不支持此功能,未来版本甚至会使您现有的用户 cookie 无效。
我在 Fedora 17 下运行 Rails 3.2.3、Ruby 1.9。我在运行时收到此警告,我rails s
该如何解决?
安全警告:没有为 Rack::Session::Cookie 提供秘密选项。这构成了安全威胁。强烈建议您提供一个秘密,以防止可能来自精心制作的 cookie 的漏洞利用。未来版本的 Rack 将不支持此功能,未来版本甚至会使您现有的用户 cookie 无效。
这是一个 Rails 错误,因为子类违反了超类 API 合同。
Rails 用户可以安全地忽略该警告。
(https://github.com/rack/rack/issues/485#issuecomment-11956708,重点补充)
关于rails bug讨论的确认:https ://github.com/rails/rails/issues/7372#issuecomment-11981397
阅读基于 tehgeekmeisters 答案的讨论,这个警告正在弹出,因为 Rails 使用 Rack cookie 的方式与预期不同。在就如何处理此问题和解决方案达成最终协议之前,暂时忽略此警告应该是可以的。
这个问题已经在刚刚发布的 Rails 3.2.11 中得到解决。
日志:https ://github.com/rails/rails/commits/v3.2.11
提交:https ://github.com/rails/rails/commit/95fe9ef945a35f56fa1c3ef356aec4a3b868937c
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
Github https://github.com/rails/rails/issues/8789中打开了一个问题。似乎是涉及带有 Rack 1.4.2 的 Rails 3.2.10 的错误导致了这种情况。IMO,在问题解决之前可以安全地忽略它。
编辑:此问题已在 Rails 3.2.11 中解决。
rails 更新到 3.2.13 ,可以解决这个问题。