我应该将 JWT 令牌存储在 IndexedDB 中吗?

Posted

技术标签:

【中文标题】我应该将 JWT 令牌存储在 IndexedDB 中吗?【英文标题】:Should I store JWT tokens in IndexedDB? 【发布时间】:2020-10-03 05:03:48 【问题描述】:

阅读一些文章后,我意识到使用 localStorage 和 sessionStorage 存储 JWT 令牌是一个坏主意,应该使用带有httpOnly 的 cookie。

当我今天阅读更多内容并了解一些关于 indexedDB 的信息时,我想知道 indexedDB 是否也是存储 JWT 令牌的安全选项?

【问题讨论】:

【参考方案1】:

简短的回答是否定的,因为您非常确信使用 localStorage 和 sessionStorage 是一个坏主意。 IndexedDB 也容易受到类似于本地存储的跨站点脚本 (XSS) 攻击。

无论安全性如何 -

    IndexedDB API 功能强大,但对于存储 jwt 令牌等简单用例来说可能看起来过于复杂(我什至会说“可怕”)。因为,即使对于这种实现,您也必须编写更多代码。 (更多代码,这意味着可能会有更多错误)。刚开始时请注意陡峭的学习曲线。 IndexDB 实际上并不是为此类用例设计的。它旨在处理大量结构化数据。对于基本的键值操作,IndexedDB 的性能会受到影响。 浏览器对 IndexedDB 的支持也不是很好。

【讨论】:

说得好,索引数据库主要用于在构建 pwa 时存储数据,因此如果客户端离线,您可以访问它

以上是关于我应该将 JWT 令牌存储在 IndexedDB 中吗?的主要内容,如果未能解决你的问题,请参考以下文章

我应该在哪里存储 JWT 令牌?

在 Redis 中存储 JWT 令牌的标准做法是啥?

在哪里存储 JWT 令牌?

JSON Web 令牌 (JWT):我应该使用响应标头还是正文进行令牌传输?

JWT 刷新和访问令牌

应该存储哪些 JWT 令牌以供以后使用?