加载中...
JWT 是一种紧凑的、URL 安全的令牌格式,把用户信息直接编码并签名后发给客户端,服务器无需存储状态即可验证。它解决了分布式系统 Session 共享的难题,但误用场景同样比比皆是。

| 标准 | RFC 7519 |
| 常用签名算法 | HS256、RS256、ES256 |
| 结构 | Header.Payload.Signature |
JWT 由三部分组成,Base64URL 编码后用点分隔:Header.Payload.Signature。Header 指定算法(如 HS256 或 RS256);Payload 包含声明(claims),如用户 ID、角色、过期时间;Signature 是用密钥对前两部分的签名。
服务器收到 JWT,重新计算签名并对比,一致则信任 Payload 里的数据——无需查数据库。这是 JWT「无状态」的核心:状态在 Token 里,不在服务器。HS256 用共享密钥签名(适合单体应用),RS256 用私钥签名、公钥验证(适合微服务,各服务持公钥即可验证,无需共享秘密)。[1]
JWT 被滥用的频率惊人。几个典型坑:
alg: none,跳过签名验证。2015 年被广泛利用,现代库已修复,但要确认使用的库版本不受影响。Payload 是 Base64 编码,不是加密,任何人都能解码看到内容。切勿在 Payload 里放密码、银行卡号等敏感字段。

| 标准 | RFC 7519 |
| 常用签名算法 | HS256、RS256、ES256 |
| 结构 | Header.Payload.Signature |
登录 后参与讨论
暂无讨论,来发表第一条评论吧