0
我們在將會話移至Redis時開始的CSRF令牌存在問題。問題在於用戶註銷並長時間離開登錄屏幕,例如,過夜。然後,在早上,由於redis會話已從服務器(TTL)中刪除,因此表單CSRF令牌無效,第一次登錄嘗試總是失敗。在會話過期後無法驗證CSRF令牌的真實性 - Rails + devise + redis
我在網上搜索了幾個小時,但不知道什麼是正確的路要走。添加此文件解決問題:
class SessionsController < Devise::SessionsController
skip_before_filter :require_no_authentication, only: [:new]
end
但從我read online,這是一個安全隱患。我一直在尋找,看見幾個選擇:
- 上失敗的嘗試,提交表單之前從服務器返回一個新的令牌,並重新提交表單
- ,進行AJAX GET調用來檢索新的令牌
- 令牌添加到請求標頭中的登錄控制器
。如果我理解正確的安全風險,我看不出任何的解決方案解決了安全問題。我的意思是,從我讀到的無保護登錄API的風險來看,攻擊者可以欺騙其他人登錄到攻擊者配置文件並輸入私有數據,然後攻擊者可以使用這些數據。所以,有了這些解決方案,攻擊者就可以模仿相同的行爲並自行入侵,對吧?
解決此問題最安全的方法是什麼?