[英]Rails: Devise not properly destroying user session cookie after calling destroy_user_session_path
嗨,我正在使用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
這是基於cookie的會話存儲的標准行為-特別是默認的Rails / Rack CookieStore。 會話完全保存在cookie中,並且在服務器上沒有會話狀態(據我所知)。 這意味着如果任何人竊取了cookie,他們就可以訪問該用戶帳戶,並且使cookie無效的唯一方法是更改用於對cookie進行數字簽名的機密。 最好的防御方法是對整個站點使用SSL。 您還可以在ApplicationController之前/之后添加一些過濾器,並應用其他一些緩解策略,例如時間戳和保留有效/活動會話的列表。 該鏈接很好地描述了一些選項:
https://www.coffeepowered.net/2013/09/26/rails-session-cookies/
在這里發出: https : //github.com/plataformatec/devise/issues/3031
您必須將會話存儲更改為Active Record會話存儲-https : //github.com/rails/activerecord-session_store
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.