我正在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的bug,因为子类违反了父类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 cookies的方式与预期不同。现在可以暂时忽略这个警告,直到就如何处理这个问题达成最终协议并实施修复。
这个问题已经在刚发布的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 revision 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。看起来涉及Rails 3.2.10和Rack 1.4.2之间的一个bug。在这个问题得到解决之前,我认为可以安全地忽略它。
编辑:此问题已在Rails 3.2.11中得到解决。
升级Rails至3.2.13版本可以解决这个问题。