JWT 令牌安全漏洞和可能的解决方案请求

Posted

技术标签:

【中文标题】JWT 令牌安全漏洞和可能的解决方案请求【英文标题】:JWT Token Security vulnerability and request for possible solution 【发布时间】:2021-09-17 18:27:05 【问题描述】:

我有一个关于 JWT 安全方面的问题。 考虑使用 JWT 作为其网关中的安全性的 X 应用程序。并且此令牌从原点开始有效期为 3 分钟。

所以场景如下:

X 应用程序在 UI 端登录。因此,UI 调用必须首先转到网关并获取创建的 JWT 令牌。因此响应发送回 UI。因此,来自 UI 的进一步请求将使用 JWT 令牌发送到服务层。这次网关验证请求标头中保存的令牌。它允许进一步到服务层。 这首先发生在令牌的第一分钟,因此通过简单地做开发工具,我们可以找到暴露在 UI 中的 JWT 令牌。

现在任何拥有 API 服务 URL 的人都可以使用这个 JWT 令牌并访问我们的 API 服务,对吧?不是安全问题吗。 ?或者有什么办法解决这个问题?

【问题讨论】:

为什么会是个问题?如果需要,为什么不向安全层添加更多详细信息(例如验证与令牌关联的 IP 地址) 我不能。它是一个开放的应用程序,全球各地都可以访问我的应用程序。 JWT 适合这里吗? 【参考方案1】:

假设有人从客户端窃取了 JWT 令牌。

您的 JWT 令牌应该是唯一的,因为它包含只能验证单个用户/实体的信息。这意味着该令牌授权单个用户/实体可以执行的操作。

除此之外,您应该只允许您在网关/api 中信任的来源,这可以通过 CORS 和 CSRF 来完成。这将使令牌无法使用,除非您的客户端 (UI) 来源。

【讨论】:

1.这个时候第一个用户不活跃,黑客使用 JWT 令牌呢?它与单用户无关 2. 它是一个 Web 应用程序,任何人都可以从任何浏览器访问。什么 CORS 和 CSRF 可以在这里停止? CORS 和 CSRF 将阻止黑客使用工具或他们的机器或其他服务器使用该令牌访问您的 API。至于黑客能够同时访问浏览器和令牌,我最不担心的就是你的 api 你可以在令牌中使用 IP 来防止中间人攻击的另一件事

以上是关于JWT 令牌安全漏洞和可能的解决方案请求的主要内容,如果未能解决你的问题,请参考以下文章

JWT - 刷新令牌和安全改进

将 jwt 暴露给客户端可能会导致安全问题

Spring Boot 安全性 - 允许使用过期 JWT 令牌的用户请求

JWT 访问令牌和刷新令牌安全性

可以使用 Auth0 JWT 令牌向 Django 后端发送 POST 请求吗?

安全的单站点 JWT 实施