一文搞懂JWT手册,别再停留在会用层面

2026-10-29 来源: 点击量

JWT 最常见的误区,是把它当成“加密过的安全令牌”。实际上 JWT 只是自包含、可验签、URL 安全的声明载体;它的 Payload 只是 Base64URL 编码,任何人都能解码,所以安全重点不在“藏数据”,而在“签名、过期、存储、吊销和算法控制”。一文搞懂JWT手册,别再停留在会用层面

一、JWT 的三段结构

JWT 由三部分组成,用 . 连接:

Header:描述算法和类型,例如 alg: HS256、typ: JWT。

Payload:存放 claims,比如 sub、iss、aud、iat、exp、jti。

Signature:用密钥对 Header 和 Payload 做签名,保证内容未被篡改。

常见签名算法包括 HS256、RS256、ES256。

HS256 是对称签名,适合单体服务;RS256/ES256 是非对称签名,私钥签名、公钥验签,更适合微服务和多服务验签。

二、标准认证流程

典型流程是:

用户登录,提交账号密码。

服务端校验通过后签发 JWT。

客户端保存 JWT。

后续请求携带 Authorization: Bearer。

服务端验签、检查过期和必要 claims。

验签通过则放行,失败则返回 401。

这里要注意:JWT 的“无状态”只意味着服务端不需要像传统 Session 那样维护完整会话,但不代表可以完全不做吊销和风控。

三、新手最容易踩的坑

把 JWT 当成加密数据

Payload 只是编码,不是加密。不要放密码、身份证号、手机号、支付信息等敏感字段。

不设过期时间

没有 exp 的 JWT 一旦泄露,攻击者可以长期使用。访问令牌建议短生命周期,例如 15-60 分钟。

只用单一长生命周期 Token

更稳妥的做法是双 Token:短期 Access Token 用于接口鉴权,长期 Refresh Token 用于换取新 Access Token。

把 Token 放在 localStorage 里裸奔

localStorage 容易被 XSS 读取。更推荐 HttpOnly、Secure、SameSite Cookie;如果放在 Header 中,也要配合严格的 CSP 和 XSS 防护。

忽略 Refresh Token 轮换

Refresh Token 不应长期静态有效。每次使用应失效旧 Token、签发新 Token,并记录 jti,防止被盗后反复使用。

允许 alg 为 none

如果服务端没有固定允许的算法,攻击者可能把 alg 改成 none 并去掉签名,从而绕过验签。

RS256/HS256 算法混淆

如果服务端同时支持对称和非对称算法,且没有严格绑定,攻击者可能用公钥当作 HS256 密钥伪造 Token。2026 年初 Hono JWT 中间件就出现过类似算法混淆漏洞 CVE-2026-22817。

不校验 iss、aud、nbf、iat

只验签名和过期不够。多服务场景必须校验 aud,防止 Token 被跨服务滥用;也要校验 iss 和时间类 claims。

Payload 里塞太多数据

JWT 会随每个请求传输,过大会增加带宽和解析成本。只放最小必要信息。

没有吊销机制

虽然 JWT 无状态,但生产系统仍需要吊销能力。可以通过 Redis 维护已注销 jti 黑名单,或在关键操作时二次验证。

四、生产级安全清单

强制 HTTPS 传输。

固定允许的签名算法,禁止 none。

使用强密钥,HS256 密钥要有足够熵;RS256/ES256 妥善保管私钥。

Access Token 短生命周期,Refresh Token 长生命周期但需轮换。

Refresh Token 存入 HttpOnly、Secure、SameSite Cookie。

校验 exp、iss、aud、nbf、iat、jti。

对关键操作增加二次验证,如改密、支付、绑定设备。

建立 Token 吊销机制,配合 Redis 黑名单或数据库标记。

监控异常验签失败、算法不匹配、IP/设备跳变。

定期轮换密钥,并保留旧密钥短期用于验签过渡。

五、一个更稳的 Token 模型

登录时签发:

Access Token:15-30 分钟,放在内存或短期 Cookie,用于 API 鉴权。

Refresh Token:7-30 天,放在 HttpOnly Cookie,只用于换取新 Access Token。

Refresh Token 每次使用后立即失效,并签发新的 Refresh Token。

使用 jti 记录有效 Refresh Token,支持吊销和重放检测。

这样既能减少用户频繁登录,又能把泄露后的攻击窗口压到较小。

一句话总结:JWT 不是“用了就安全”的银弹。它解决的是无状态身份传递问题,真正的安全要靠短生命周期、双 Token、强签名、严格校验、安全存储和可吊销机制共同兜底。

相关文章
  • 一文搞懂JWT手册,别再停留在会用层面
    一文搞懂JWT手册,别再停留在会用层面

    JWT 最常见的误区,是把它当成“加密过的安全令牌”。实际上 JWT 只是自包含、可验签、URL 安全的声明载体;它的 Payload 只是 Base64URL 编码,任何人都能解码,所以安全重点不在“藏数据”,而在“签名、过期、存储、吊销和算法控制”。 一、JWT 的三段结构JWT 由三部...

  • Spring Cloud常见问题及解决方案大全
    Spring Cloud常见问题及解决方案大全

    Spring Cloud 常见问题及解决方案大全Spring Cloud 微服务项目里,问题通常集中在六类:服务注册发现、服务调用、配置中心、网关路由、熔断限流、分布式事务与链路追踪。下面按故障场景整理,方便排查。 一、服务注册与发现失败常见现象Nacos / Eureka 控制台看不到服...

  • JSP思维导图避坑指南:资深后端的血泪经验
    JSP思维导图避坑指南:资深后端的血泪经验

    JSP 思维导图避坑指南:资深后端视角先说结论:JSP 适合维护老项目、做课程实验、毕业设计、理解 Servlet 生命周期;不建议作为 2026 年新项目的主技术栈。现代后端主流是 Spring Boot + 前后端分离,或 Spring Boot + Thymeleaf / FreeMarker。下面这份内容可以整理成思维导图,中...

  • 2026年必看监控最新趋势与技术选型指南
    2026年必看监控最新趋势与技术选型指南

    2026 年必看监控最新趋势与技术选型指南监控行业已经跳出 “比拼像素、存录像、事后回看” 的旧模式,转向边缘 AI、多传感器融合、云边混合、隐私可信的体系化感知方案。2026 年选型的核心逻辑:分辨率只是基础门槛,智能算力、协议互通、存储架构、安全合规...

  • 【推荐】ELK日志最佳实践,大厂都在用
    【推荐】ELK日志最佳实践,大厂都在用

    2026年ELK日志平台最佳实践:从架构到成本的全链路方案2026年ELK仍然是企业级日志平台的工业级标准,但"最佳实践"已经从单纯部署组件,演进为架构解耦、成本可控、可观测性融合的系统工程。 下面从架构、配置、优化、选型四个维度展开。 一、生产级架构:告别...

  • 为什么后端安全这么重要?深度剖析底层原理
    为什么后端安全这么重要?深度剖析底层原理

    为什么后端安全这么重要?深度剖析底层原理核心判断:前端是门面,后端是信任与数据的底盘。前端所有校验、展示、权限都可以被绕过;后端是业务逻辑、核心数据、资金、权限、接口控制唯一可信的防线。前端防 “普通用户误操作”,后端防 “攻击者”。一旦后...