JWT 常用于登录态和接口鉴权,但它不是加密容器。Header 和 Payload 可以被直接解码查看。
xxxxx.yyyyy.zzzzz
header.payload.signatureJWT 通常由三段组成,中间用点号分隔:第一段是 Header,第二段是 Payload,第三段是 Signature。
三段分别代表什么?
| 部分 | 内容 | 是否加密 |
|---|---|---|
| Header | 算法和 token 类型,例如 alg、typ | 不是加密 |
| Payload | 业务声明,例如 sub、exp、role | 不是加密 |
| Signature | 用密钥或私钥计算出的签名 | 用于验证完整性 |
安全查看 JWT 的注意事项
- 不要把真实生产 token 粘贴到不可信网站。
- Payload 里不要放密码、身份证号、银行卡号等敏感信息。
- 看到 Payload 不代表 token 有效,还需要检查过期时间和签名。
- HS256 验签需要密钥;不要把生产密钥暴露给前端或第三方页面。
- 本地浏览器解码比上传到服务器的在线工具更适合排查敏感 token。
常见字段怎么看?
| 字段 | 含义 | 排查重点 |
|---|---|---|
| sub | 主体或用户 ID | 确认是不是当前用户 |
| exp | 过期时间 | 通常是 Unix 时间戳 |
| iat | 签发时间 | 判断 token 是否过旧 |
| aud | 受众 | 确认是否给当前服务使用 |
| iss | 签发方 | 确认来源是否可信 |
总结
JWT 的 Header 和 Payload 便于调试,但不应被当作保密空间。安全使用 JWT 的关键是控制签名密钥、过期时间和敏感字段。