计算机网络相关

JWT令牌泄露,如何让其失效?

因为 JWT 是无状态的 ,天生一旦签发出去,除非过期时间到了,否则服务器是无法单方面让它失效 的。

所以,所谓"旧的 JWT 令牌失效",一般要靠一些额外机制。


1. JWT 本身的问题

  • 无状态:JWT 验证只依赖签名和过期时间,服务器不保存会话。
  • 后果:一旦签发,JWT 在有效期内都能被用来访问,除非服务器主动检查并拒绝它。

2. 让旧 JWT 失效的常见做法

方法 1:缩短 JWT 的有效期 + Refresh Token

  • 设计方式:

    • Access Token(JWT):有效期很短(几分钟到几十分钟)。
    • Refresh Token(通常存数据库):有效期较长(几天/几周),用于申请新 JWT。
  • 好处:

    • 如果 JWT 泄露,攻击者最多能用短时间。
    • 服务端只要能废掉 Refresh Token(比如检测异常行为、用户注销),旧 JWT 很快就自然失效。

方法 2:黑名单 / 撤销列表

  • 在服务器维护一个 黑名单 ,存放已撤销的 JWT(通常存 jti 字段或整个 token)。
  • 验证请求时,除了校验签名,还要查询黑名单。
  • 缺点:失去了 JWT 的"纯无状态"优势,要额外存储和查询。

方法 3:令牌版本号(Token Versioning)

  • 在用户数据库里存一个 token_version 字段。

  • 签发 JWT 时,把 token_version 写进 payload。

  • 验证时对比数据库中的 token_version

    • 如果用户被强制登出或令牌被刷新,就把数据库的 token_version +1。
    • 旧 JWT 的 token_version 就和数据库不一致,立刻失效。
  • 优点:不需要存储所有旧 token,只需要一个版本号。


方法 4:重置密钥

  • 如果极端情况下需要让所有现有 JWT 失效,可以直接更换签名密钥(secret / private key)。
  • 所有旧 token 因签名不匹配而失效。
  • 缺点:会影响所有用户。

3. 总结

旧 JWT 不会自己失效,必须靠额外机制。常见策略:

  • 短期 Access Token + 长期 Refresh Token(最常用)。
  • 黑名单(适合高安全要求系统)。
  • 版本号机制(高效且常见)。
相关推荐
Mu.3871 天前
计算机网络模型
网络·网络协议·计算机网络·安全·http·https
0和1的舞者2 天前
《网络编程核心概念与 UDP Socket 组件深度解析》
java·开发语言·网络·计算机网络·udp·socket
没书读了2 天前
计算机网络-考前记忆清单
计算机网络
Protein_zmm2 天前
第一章 计算机网络和因特网(下)
服务器·计算机网络·php
矶鹬笛手3 天前
(2.1) 信息技术及其发展
sql·计算机网络·c#
gadiaola3 天前
【计算机网络面试篇】HTTP
java·后端·网络协议·计算机网络·http·面试
报错小能手4 天前
计算机网络自顶向下方法57——网络安全 基础与密码学原理
计算机网络·安全·web安全
百***81274 天前
《计算机网络》(B)复习
网络·计算机网络
报错小能手4 天前
计算机网络自顶向下方法50——链路层 虚拟局域网 链路虚拟化:网络作为链路层(多协议标签交换)
网络·计算机网络·智能路由器
报错小能手4 天前
计算机网络自顶向下方法60——网络安全 详解TLS(传输层安全协议)
计算机网络·安全·web安全