簡體   English   中英

以角度存儲 JWT 令牌的位置?

[英]Where to store JWT token in angular?

我正在用 Django 和 angular 構建一個應用程序。 目前,我正在將后端發布的 JWT 存儲在本地存儲上。 但是,我擔心 XSS 攻擊。 我應該使用僅 HTTP cookie 存儲令牌嗎? 我也在考慮將令牌存儲在我的身份驗證服務類中的變量字段中。 但我不完全確定 angular 是否在整個應用程序中共享服務。 我的身份驗證服務會有一個實例嗎?

假設您使用標准依賴注入,每次都會實例化您的服務的一個新實例,因此不會存儲服務類中的字段。

會話或本地存儲雖然很好。 JWT 機制可防止客戶端輕易更改內容(因為您必須在下游后端服務上對其進行驗證)。

可以想象,您可以在 JWT 負載中保留一些原始請求簽名,並檢查此匹配項下的任何輔助請求。 例如,IP 地址、用戶代理字符串等。

就個人而言(如果它被正確實現),我認為這對於大多數面向 Web 的應用程序來說已經足夠安全了。 顯然,銀行/金融應用程序可能希望加倍努力,使用 2 因素身份驗證等。

讓事情直截了當:

如果您遇到了 XSS - 游戲就結束了。 時期。

那說,

在我當前的工作場所通過外部Penetration Tests一種方法是將JWT令牌放在httpOnly secure samesite=strict cookie 中。

為了進一步防止 CSRF,您可以在 Web 存儲中添加一個標識符,將其作為標題附加到每個xhr

在服務器中,從jwt提取標識符並將其與標頭值進行比較。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM