我熟悉 Web 存储 API 和 cookie,但我不知道存储身份验证令牌的最安全方法是什么。我想知道这是否会破坏任何第三方库。
我想要一份可用方法的详尽列表,其中包括每种方法的优缺点,以及最重要的最佳方法(如果有的话)。
通过基于令牌的身份验证,您可以选择存储 JWT 的位置。我们强烈建议您将令牌存储在本地存储/会话存储或 cookie 中。
通常,JWT 放置在浏览器本地存储中,这对于大多数用例都很有效。
使用用户名和密码登录用户时,响应正文包含
access_token JWT
。然后您需要在客户端代码中处理此响应。然后可以将该令牌存储在 localStorage 或 sessionStorage 中。
localStorage
和 sessionStorage
都延伸 Storage
。它们之间唯一的区别是数据的持久性:
localStorage
- 数据将持续存在,直到明确删除为止。所做的更改将被保存并可供当前和将来访问该网站时使用。
sessionStorage
- 所做的更改将被保存并可用于当前页面以及将来在同一窗口上访问该网站。窗口关闭后,存储将被删除。
您还可以使用cookie来存储JWT。设置 cookie 的确切方法取决于您使用的客户端语言。
有不同的选项来控制 cookie 的生命周期:
httpOnly
标志,则只能由服务器端读取。Referer
和 Origin
标头也可以部分阻止 CSRF。原文:https://auth0.com/docs/security/store-tokens#how-to-implement
最安全的选项是内存中。 查看此内容进行深入研究