我们可以在哪里安全地存储 JWT 令牌?

Posted

技术标签:

【中文标题】我们可以在哪里安全地存储 JWT 令牌?【英文标题】:Where can we store the JWT token securely? 【发布时间】:2020-08-22 21:06:48 【问题描述】:
1. User will do the login UserName and password.
2. If the login success then server will return JWT.
3. Now we will store the token.
4. Now for every request we will send the  JWT Token for authentication on server.

我的问题是,我们可以将 JWT 令牌存储在哪里,因为本地存储、会话、Cookies 不安全。

【问题讨论】:

在“全局”可访问的数据结构中 这个问题已经被问过好几次了:这是我在回来的时候回答了一个小问题***.com/questions/61259117/… 【参考方案1】:

“只有服务器应该知道用于生成 JWT 的“秘密”。如果有人修改了 JWT 中包含的数据,服务器将无法解码它。因此服务器可以信任任何它可以解码的 JWT 。”

您不需要将 JWT 令牌存储在别人找不到的地方。如果您认为如果黑客获得了某人的令牌,则有一个到期日期选项。

检查这个:How safe is JWT?

【讨论】:

谢谢,我们可以使用 httpOnly Cookie 来存储 Jwt 吗? 你能检查一下吗:stormpath.com/blog/…我想你可以。【参考方案2】:

httpOnly cookie

这是一种特殊的 cookie,仅在 HTTP 请求中发送到服务器,并且永远无法从浏览器中运行的 javascript 访问(无论是读取还是写入)。

检查这个: https://developer.mozilla.org/en-US/docs/Web/HTTP/Cookies

如果您愿意,可以使用此软件包让您的生活更轻松: https://www.npmjs.com/package/react-cookie

【讨论】:

谢谢 Johan,能否提供一些在 Node js 后端的 httpOnly cookie 中存储 jwt 的实现细节?

以上是关于我们可以在哪里安全地存储 JWT 令牌?的主要内容,如果未能解决你的问题,请参考以下文章

Azure AD 令牌中的哪些 JWT 声明可以安全地用于用户映射?

jwt访问令牌存储在spring boot中的哪里?

我可以在哪里将 JWT 令牌存储在 React js 中以验证应用程序后端的各种路由?

在哪里存储 JWT 令牌 Laravel 5.6 应用程序?

在基于 Web 浏览器的客户端上存储授权(或 JWT)令牌的位置?

在 JWT 令牌中存储用户权限的最佳做法是啥?