基于此article和此question,刷新令牌的寿命较长,而访问令牌的寿命较短。我将刷新令牌存储了60天以上,将访问令牌存储了20分钟以上(或更少),但从未超过一个小时。
理解这些标记的使用的主要痛点是两个标记的存储方法。我了解我应该将刷新令牌存储为httpOnly
,以使其无法通过脚本(XSS攻击)访问,并在本地存储访问令牌(localStorage
或sessionStorage
以便在API调用中用作键。这是正确的方法吗?是否应该按照本文的建议进一步加密刷新令牌?任何见解将不胜感激,感谢您的阅读。
答案 0 :(得分:1)
首先,您需要了解,一旦攻击者获得受害者用户代理(浏览器),绝对无法采取任何措施来阻止令牌的提取。没有加密将无济于事。您需要将加密密钥放在客户端的某个位置,这使整个加密恕我直言的想法毫无意义。有时人们被迫加密这样的内容,因为他们希望自己的小姐妹无法访问,或者因为大公司制定了必须遵守的愚蠢政策。
我看到您愿意将刷新令牌保存在cookie中。没关系,只需确保已正确配置即可。 This presentation should help。
最后一个建议。会话安全性不仅与会话安全性有关。您还需要执行TLS,数据清理和访问控制。如果您忘记了TLS,那么任何令牌存储策略都将无济于事。
答案 1 :(得分:1)
为了获得最佳安全性和整体体系结构:
理解原因的原因很深,例如下面的博客文章:
您可能有不同的目标要挖掘。如果有帮助,很高兴回答跟进问题。
答案 2 :(得分:0)
直接回答您的问题:不,没有理由加密刷新令牌。
加密cookie的唯一原因是它是否包含需要保护的信息,例如帐号,密码等。刷新令牌不包含有意义的数据-它只是指向条目的长随机数在服务器的数据存储中。