计算机网络相关

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(最常用)。
  • 黑名单(适合高安全要求系统)。
  • 版本号机制(高效且常见)。
相关推荐
ZJH__GO10 小时前
网络编程v2--多客户端互通
java·运维·服务器·开发语言·计算机网络
Tsuki_tl15 小时前
吃透 TCP:可靠传输完整原理【上】
网络协议·tcp/ip·计算机网络·三次握手·后端面试·四次挥手·传输层
shiyi.十一1 天前
第2章:应用层 — 知识要点与架构
网络·计算机网络·架构
sbjdhjd2 天前
SQL 注入零基础详解:原理、手工注入流程与 Sqli-Labs 靶场实战1~5关和第9关思路
数据库·sql·计算机网络·web安全·网络安全·网络攻击模型·安全架构
2501_916008894 天前
HTTPS 抓包遇到证书绑定怎么办,使用 TraceEagle 解除 App 证书校验
网络协议·计算机网络·http·网络安全·ios·adb·https
zx1154504 天前
前后端开发必备的计算机网络知识
计算机网络
砚凝霜5 天前
软考网络工程师|第 1 章 计算机网络基础 完整备考笔记
网络·笔记·计算机网络
TechEdu2026065 天前
[计算机科学]计算机网络原理
计算机网络·计算机科学
谙弆悕博士5 天前
系统集成项目管理工程师教程(第3版)笔记——第2章:信息技术发展
笔记·计算机网络·信息安全·学习方法·业界资讯·软考·系统分析师
ttod_qzstudio5 天前
【软考备考】计算机网络详解:OSI/TCP-IP 分层 + IP 子网划分,一篇拿下网络模块(附 10 道练习)
网络·tcp/ip·计算机网络·软考