了解访问令牌和刷新令牌的安全

时间:2020-07-30 09:58:25

标签: security authentication access-token refresh-token

基于此article和此question,刷新令牌的寿命较长,而访问令牌的寿命较短。我将刷新令牌存储了60天以上,将访问令牌存储了20分钟以上(或更少),但从未超过一个小时。

理解这些标记的使用的主要痛点是两个标记的存储方法。我了解我应该将刷新令牌存储为httpOnly,以使其无法通过脚本(XSS攻击)访问,并在本地存储访问令牌(localStoragesessionStorage以便在API调用中用作键。这是正确的方法吗?是否应该按照本文的建议进一步加密刷新令牌?任何见解将不胜感激,感谢您的阅读。

3 个答案:

答案 0 :(得分:1)

首先,您需要了解,一旦攻击者获得受害者用户代理(浏览器),绝对无法采取任何措施来阻止令牌的提取。没有加密将无济于事。您需要将加密密钥放在客户端的某个位置,这使整个加密恕我直言的想法毫无意义。有时人们被迫加密这样的内容,因为他们希望自己的小姐妹无法访问,或者因为大公司制定了必须遵守的愚蠢政策。

我看到您愿意将刷新令牌保存在cookie中。没关系,只需确保已正确配置即可。 This presentation should help

最后一个建议。会话安全性不仅与会话安全性有关。您还需要执行TLS,数据清理和访问控制。如果您忘记了TLS,那么任何令牌存储策略都将无济于事。

答案 1 :(得分:1)

为了获得最佳安全性和整体体系结构:

  • 访问令牌应仅存储在浏览器内存中-足够安全
  • 刷新令牌在Cookie中的效果更好-无需重定向即可启用从应用1浏览到应用2之类的功能

理解原因的原因很深,例如下面的博客文章:

您可能有不同的目标要挖掘。如果有帮助,很高兴回答跟进问题。

答案 2 :(得分:0)

直接回答您的问题:不,没有理由加密刷新令牌。

加密cookie的唯一原因是它是否包含需要保护的信息,例如帐号,密码等。刷新令牌不包含有意义的数据-它只是指向条目的长随机数在服务器的数据存储中。