我正在使用基於JWT的身份驗證構建SPA應用程序並進行服務器端呈現。存儲在Cookie中的JWT - 安全問題
當前實現:
- JWT令牌發放和成功的用戶名和密碼驗證
- 令牌之後轉移到客戶端,然後存儲在cookie的(不
HttpOnly
) - 的這樣做的目的是爲了避免需要完全刷新或關閉頁面 - 記錄與令牌
Authorization
頭將已刪除的cookie後再次登錄連接到每個API請求,如果令牌存在- 完整的SSL流量
我不能在令牌的localStorage存儲,因爲服務器端渲染,也沒有HttpOnly
因爲我需要爲了構建Authorization
頭訪問的cookie。
在這樣的架構中竊取令牌有什麼可能性?
事實上(糾正我,如果我錯了)通過cookie發送令牌(因爲該cookie存在,並且瀏覽器自動發送)在初始的,而不是AJAX請求,所以CSRF也是如此。 –
基於你的回答,我認爲很好的解決方案是將標記存儲在HttpOnly cookie中,然後在初始請求中讀取它,並將其保存在Redux JS存儲中(正在使用),然後在每一個下一個使用'Authorization'標頭REST請求。據我所知,在第一個問題中描述的架構的情況下,在這裏需要CSRF保護。你怎麼看待這件事? –
在這種情況下,如果您也使用cookie中的令牌,則還必須關心CSRF。如果認證信息是由瀏覽器自動發送的,CSRF是一個問題。如果會話ID或令牌在Cookie中。如果只有一個請求頭用於身份驗證,那麼在沒有針對CSRF的進一步保護的情況下您會很好。我對Redux並不是很熟悉,但如果Cookie是httpOnly,那麼您將無法從JavaScript訪問它,因此您將無法使用Redux JS進行存儲。將JWT存儲在httpOnly cookie中使其更安全,但使用案例將受到限制。 –