SuperAPI AI 工具集

jwt-decode

安全与审计

查看项目

更新于 10-15 15:30

技能介绍

用途

jwt-decode 用于解码和查看 JSON Web Token(JWT)的内容,不进行签名验证。当用户提供 JWT 字符串并希望查看其头部、载荷或声明时使用。

主要能力

  • 将令牌按 . 分割为三部分(头部、载荷、签名)。
  • 对第 1、2 部分进行 base64url 解码并解析为 JSON。
  • 展示头部、载荷(包含所有声明)以及原始签名字符串。
  • 对于 exp、nbf、iat,同时显示 Unix 时间戳和人类可读的 UTC 时间;若 exp 已过期,标注已过期及过期时长。
  • 执行安全检查(见下)。

输出格式

## Header
{ "alg": "RS256", "typ": "JWT", "kid": "abc123" }

Payload

{ "iss": "https://auth.example.com/", "sub": "user|12345", "exp": 1735689600 }

exp: 2025-01-01T00:00:00Z — EXPIRED (3 months ago)
iat: 2024-12-31T00:00:00Z

Signature

Algorithm: RS256 | Signature: [base64url string]
(Not verified — use jwt-validate to verify)

安全检查

发现以下情况时需显著标记:

  • alg: none — 令牌未签名。警告:“此令牌没有签名,不可信任。任何一方都可能创建或修改它。”这是已知攻击向量(CVE-2015-9235),攻击者剥离签名以绕过验证。
  • 载荷中的敏感数据 — JWT 是编码而非加密。若在声明中发现密码、密钥、API key 或 PII,需警告。
  • 缺失 exp — 令牌永不过期。标记为安全风险。
  • 头部中的 jku/jwk/x5u — 这些可用于诱骗验证方获取攻击者控制的密钥。若存在需标记。

使用方式

用户提供 JWT 字符串后,按上述步骤解码并展示结果,同时执行安全检查。

适用场景

  • 需要快速查看 JWT 的头部、载荷或声明内容。
  • 检查令牌中的时间声明是否过期。
  • 初步排查令牌中的安全隐患(如 alg: none、敏感数据、缺失 exp、可疑头部字段)。

限制

  • 该技能仅揭示令牌内容,不说明真实性。验证签名需使用 jwt-validate。
  • 若 cty 头部为 "JWT",载荷为嵌套 JWT,需递归解码。
  • 解码失败时,报告具体错误(base64 格式错误、JSON 无效、段数错误)。