簡體   English   中英

了解訪問令牌和刷新令牌的安全性

[英]Understanding the securing of access tokens and refresh tokens

根據這篇文章和這個問題,刷新令牌的壽命很長,訪問令牌的壽命很短。 我會將我的刷新令牌存儲超過或等於 60 天,並將我的訪問令牌存儲 20 分鍾或更多/更少,但不會超過一個小時。

我理解這些令牌使用的主要痛點是這兩個令牌的存儲方法。 我知道我應該將刷新令牌存儲為httpOnly使其無法通過腳本(XSS 攻擊)訪問,並將訪問令牌存儲在本地,無論是localStorage還是sessionStorage以在 API 調用中作為密鑰使用。 這是正確的方法嗎? 我應該按照文章中的建議進一步加密刷新令牌嗎? 任何見解將不勝感激,感謝閱讀。

首先,您需要了解,一旦攻擊者接觸到受害者的用戶代理(瀏覽器),您絕對無法阻止提取令牌。 沒有加密會有所幫助。 您需要將加密密鑰保存在客戶端的某處,這使得加密恕我直言的整個想法毫無意義。 有時人們被迫加密這樣的東西,因為他們希望他們的小姐妹無法訪問,或者因為大公司有你必須遵守的愚蠢政策。

我看到您願意將刷新令牌保存在 cookie 中。 沒關系,只要確保您進行了正確的配置。 這個演示文稿應該會有所幫助

最后一句忠告。 Session 安全性不僅僅是關於 session 安全性。 您還需要進行 TLS、數據清理和訪問控制。 如果您忘記了 TLS,那么令牌存儲策略將無濟於事。

為了獲得最佳安全性 + 整體架構:

  • 訪問令牌應僅存儲在瀏覽器 memory - 足夠安全
  • 刷新令牌在 cookies 中工作得更好 - 可以在沒有重定向的情況下從應用程序 1 瀏覽到應用程序 2

理解其中的原因是相當深刻的,如下面的我的博客文章:

不過,您可能有不同的目標。 如果有幫助,很高興回答后續問題。

直接回答您的問題:不,沒有理由加密刷新令牌。

加密 cookie 的唯一原因是它是否包含需要保護的信息,例如帳號、密碼等。刷新令牌不包含任何有意義的數據——它只是一個長隨機數,指向服務器的一個條目數據存儲。

暫無
暫無

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

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