【问题标题】:If JWT-Token is stolen如果 JWT-Token 被盗
【发布时间】:2022-01-13 16:33:27
【问题描述】:

例如,如果攻击者获取了您的 JWT 令牌,他们可以开始向服务器发送请求,将自己标识为您,并执行诸如更改服务、更新用户帐户等操作。一旦攻击者获得了您的 JWT,它就是游戏结束。

那么如果令牌被盗,我们如何使用 JWT 令牌保护我们的路由?

【问题讨论】:

  • 你不能。在令牌过期之前,拥有它的人都会被授权——这就是“不记名令牌”的意思。
  • 令牌会在一段时间后过期,比如 2 小时
  • @jonrsharpe 当然,除非有服务器端撤销列表。
  • 但是如果一些黑客得到了令牌,那么他们就可以更改用户名和密码。
  • 这就是为什么密码重置通常需要您重新确认旧密码。

标签: jwt


【解决方案1】:

基本上你是对的,如果攻击者窃取了访问令牌(不一定是 JWT),那么只要令牌有效,她就可以做任何该令牌允许的事情。您可以采取一些步骤来缓解问题或进行一些损害控制:

  1. 保持令牌的较短到期时间。如果令牌仅存在 2 或 5 分钟,那么攻击者可以窃取的数据量将受到限制。

  2. 限制令牌的范围。您不应该拥有可以做任何事情的令牌。如果您发布的令牌只允许用户读取他们的数据,那么即使有人窃取了它,他们也无法更改密码。

  3. 使用所有权证明令牌。这些是与首先接收它们的客户端相关联的令牌。当有人窃取此类令牌时,他们将无法访问 API,除非他们还可以访问所有权证明(可以是证书)。这些是 POP 令牌的示例:Certificate-bound access tokensDPoP tokens

  4. 您可以使用我们在 Curity 称为 Token Handler pattern 的东西从浏览器中隐藏您的令牌并回退到良好的旧会话。这使您的代币更难被盗。

如果您正在使用 JWT,请查看我写的一篇关于 security best practices when handling JWTs 的文章。

【讨论】:

  • 非常感谢
猜你喜欢
  • 1970-01-01
  • 2019-03-30
  • 2019-08-09
  • 2021-07-06
  • 1970-01-01
  • 2021-04-05
  • 1970-01-01
  • 2019-05-31
  • 1970-01-01
相关资源
最近更新 更多