您好我正在使用Devise LDAP Authenticatable gem,并且我遇到了一些试图正确使会话cookie无效的问题。
例如:
这是一个我需要解决的安全问题,因为这允许黑客只是嗅探cookie并以登录应用程序的授权用户身份验证自己。
似乎当我调用destroy_user_session_path时,Devise LDAP实际上并没有使旧会话无效,而只是创建一个新会话并将其提供给用户浏览器。
我可以使用任何设计设置来更改此设置。我真的不想自己改变实际的设计宝石。
devise.rb
Devise.setup do |config|
config.ldap_create_user = true
config.ldap_update_password = false
config.mailer_sender = "please-change-me-at-config-initializers-devise@example.com"
require 'devise/orm/active_record'
config.authentication_keys = [ :email ]
config.case_insensitive_keys = [ :email ]
config.strip_whitespace_keys = [ :email ]
config.skip_session_storage = [:http_auth]
config.stretches = Rails.env.test? ? 1 : 10
config.reconfirmable = true
config.reset_password_within = 6.hours
config.sign_out_via = :delete
end
答案 0 :(得分:1)
这是基于cookie的会话存储的标准行为 - 特别是默认的Rails / Rack CookieStore。会话完全保存在cookie中,并且服务器上没有会话状态(据我所知)。这意味着如果有人窃取了cookie,他们就可以访问该用户帐户,并且使cookie无效的唯一方法是更改用于对cookie进行数字签名的秘密。最好的防御措施是为整个站点使用SSL。您还可以向ApplicationController添加一些前/后过滤器,并应用其他一些缓解策略,例如时间戳和保留有效/活动会话列表。这个链接很好地描述了一些选项:
https://www.coffeepowered.net/2013/09/26/rails-session-cookies/
答案 1 :(得分:0)
此问题:https://github.com/plataformatec/devise/issues/3031
您必须将会话存储更改为 Active Record会话存储 - https://github.com/rails/activerecord-session_store