gpt4 book ai didi

ruby-on-rails - rails : Devise not properly destroying user session cookie after calling destroy_user_session_path

转载 作者:行者123 更新时间:2023-12-04 18:09:52 28 4
gpt4 key购买 nike

您好,我正在使用 Devise LDAP Authenticatable gem,在尝试正确使 session cookie 无效时遇到了一些问题。

例如:

  • 用户登录到应用程序并保存他的 session cookie
  • 用户注销并获得一个新的 session cookie
  • 用户可以通过强制他的浏览器使用他保存的旧 session cookie 来重新登录到服务器

这是一个我需要解决的安全问题,因为这允许黑客嗅探 cookie 并将自己验证为登录到该应用程序的授权用户。

似乎当我调用 destroy_user_session_path 时,Devise LDAP 实际上并没有使旧 session 无效,而只是创建一个新 session 并将其提供给用户浏览器。

是否有任何设计设置可以用来更改此设置。我真的不想自己更改实际的设计 gem。

设计.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

最佳答案

这是基于 cookie 的 session 存储的标准行为 - 特别是默认的 Rails/Rack CookieStore。 session 完全保存在 cookie 中,服务器上没有 session 状态(据我所知)。这意味着如果有人窃取了 cookie,他们就可以访问该用户帐户,并且使 cookie 无效的唯一方法是更改​​用于对 cookie 进行数字签名的 secret 。最好的防御措施是为您的整个站点使用 SSL。您还可以向 ApplicationController 添加一些前/后过滤器,并应用一些其他缓解策略,例如时间戳和保留有效/事件 session 列表。此链接很好地描述了一些选项:

https://www.coffeepowered.net/2013/09/26/rails-session-cookies/

关于ruby-on-rails - rails : Devise not properly destroying user session cookie after calling destroy_user_session_path,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16986605/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com