【问题标题】:How replication of signed JWT Tokens are prevented?如何防止签名 JWT 令牌的复制?
【发布时间】:2022-10-05 22:09:28
【问题描述】:

所以我的问题是关于不对称签名的 JWT 令牌。如何确保签名不能在 JWT 令牌上复制?如果有人捕获了 JWT,是什么阻止他在没有得到适当授权的情况下一遍又一遍地重用同一个 JWT?我相信 JWT 可以有一个到期日期,但这并不能解决问题,因为大多数应用程序的到期日期相对较长,以提供良好的用户体验。我能想到的最简单但幼稚的解决方案是将随机数从 0 开始附加到用户,并在每次使用 jwt 时递增,并处理请求。

    标签: jwt cryptography signature


    【解决方案1】:

    防止 JWT 签名的复制依赖于您正确存储签署 JWT 的密钥,无论是在安全存储中还是在其他安全的地方,重用是另一回事。

    现在,首先,如果攻击者可以轻松窃取您的 JWT,我也会担心,这几乎意味着您不使用 HTTPS/SSL,但可以肯定的是,假设我们正在运行一个有人利用您的 SSL 的场景。

    JWT 本身只不过是对客户端进行身份验证的方式,几乎类似于 API 密钥的工作方式。该客户端可以使用该令牌访问某些资源,这几乎是一种授权。它在这方面没有任何安全价值,除了在某些时候客户端使用正确的凭据对自己进行身份验证。

    所以如果它被盗了,你就有问题了。这就是令牌的生命周期发挥作用的地方。令牌可以很快过期,导致攻击者只能在短时间内访问资源,但他们仍然可以访问他们不应该访问的资源。

    在这方面,您可以尝试使用随机数来减轻攻击,就像您提到的那样。只是不要忘记通过与 JWT 的身份或会话相关的密钥来保护该随机数。或者,您可以在请求中添加 HOTP 或 TOTP,或一些独特的签名。这是以您必须在客户端和服务器上创建额外的逻辑为代价的。

    总而言之,JWT 本身并不真正提供安全性,它们提供身份验证。一般来说,如果使用 SSL 等现代安全措施,JWT 是安全的。如果您真的想为请求添加额外的安全性,则需要通过在客户端和服务器上实现更多逻辑来实现额外的逻辑,例如 OTP 或签名。

    【讨论】:

      猜你喜欢
      • 2019-08-09
      • 2018-03-16
      • 2019-11-01
      • 1970-01-01
      • 2016-12-08
      • 2018-05-29
      • 2017-05-30
      • 2017-10-15
      • 1970-01-01
      相关资源
      最近更新 更多