[英]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.