无需登录 数据私有 本地保存

JWT 调试器增强版 - 签名验证与有效期检查

63
0
0
0
什么是 JWT?它由哪几部分组成?

JWT(JSON Web Token)是一种开放标准(RFC 7519),用于在各方之间安全地传输信息。它由三部分组成,通过点号(.)分隔:

  • Header(头部):包含令牌的元数据,如签名算法(alg)和令牌类型(typ)
  • Payload(负载):包含Claims(声明),是关于用户和令牌的元数据
  • Signature(签名):用于验证令牌的完整性和真实性

完整格式为:xxxxx.yyyyy.zzzzz。在本工具中,粘贴JWT后会自动将三部分以不同颜色区分显示,让您一目了然地查看每个部分的内容。

HS256 和 RS256 有什么区别?

HS256和RS256是两种不同的JWT签名算法,主要区别在于密钥使用方式:

  • HS256(对称加密):签发方和验证方使用同一个密钥(Secret)。密钥必须保密,适用于同一服务内部或信任的系统间使用。
  • RS256(非对称加密):签发方使用私钥签名,验证方使用公钥验证。私钥保密,公钥可以公开分发,适用于跨服务、第三方集成场景。

在调试时,HS256需要输入共享密钥,RS256需要输入RSA公钥。本工具支持两种算法的签名验证。

exp、nbf、iat 分别是什么意思?

这三个是JWT中的标准时间Claim:

  • exp(Expiration Time):过期时间,Token在此时间后应被拒绝使用
  • nbf(Not Before):生效时间,Token在此之前应被拒绝使用
  • iat(Issued At):签发时间,Token创建的时间点

本工具会自动将这些Unix时间戳转换为人类可读的日期时间格式,并高亮显示Token当前的有效期状态(有效/即将过期/已过期)。

Base64URL 编码和 Base64 有什么不同?

Base64URL是Base64编码的URL安全变体,主要区别在于字符替换:

  • + 替换为 -
  • / 替换为 _
  • 移除末尾的 = 填充符

JWT使用Base64URL编码是为了确保编码后的字符串可以在URL、Cookie等场景中安全传输,不会因为特殊字符引起解析错误。本工具会自动处理这种编码的解码工作。

JWT 安全吗?使用时需要注意什么?

JWT本身是安全的,但使用不当可能导致安全问题:

  • 算法混淆攻击:攻击者将alg改为none或从RS256降级为HS256
  • 密钥泄露:对称加密的密钥一旦泄露,任何人都能伪造Token
  • 敏感信息泄露Payload是明文编码,不应存储密码等敏感数据
  • Token过期处理:必须正确实现过期检查,拒绝使用过期Token

本工具会自动检测none算法并发出安全警告,帮助您识别潜在风险。

JWT 过期后怎么办?什么是 Refresh Token?

JWT过期后,需要重新认证获取新的Token。常见的解决方案是使用Refresh Token机制:

  • 登录时同时签发Access Token(短期有效,如15分钟)和Refresh Token(长期有效,如7天)
  • Access Token过期时,使用Refresh Token向认证服务器请求新的Access Token
  • Refresh Token过期后,用户需要重新登录

本工具的exp字段会实时显示Token剩余有效时间,帮助您判断何时需要刷新Token。

为什么我的Token验证总是失败?

签名验证失败常见原因:

  • 密钥错误:输入的密钥与签发Token时使用的不一致(注意大小写和空格)
  • 算法不匹配:Header中的alg与实际使用的算法不符
  • Token被篡改:任何字符的修改都会导致签名失效
  • 密钥格式错误:RSA/EC密钥需要完整的PEM格式

建议先使用快捷示例熟悉工具操作,再验证自己的Token。

我的Token数据安全吗?会被服务器记录吗?

本工具采用纯前端实现,所有操作都在您的浏览器本地完成:

  • JWT解码、签名验证、有效期检查全部在浏览器JavaScript中执行
  • Token数据不会被发送到任何外部服务器
  • 页面关闭后,浏览器缓存的Token数据自动清除

您可以放心使用本工具处理包含敏感信息的生产环境Token,我们的设计原则是"数据永远不离开您的浏览器"。

如何判断一个JWT是否被篡改?

判断JWT是否被篡改需要进行签名验证:

  • 使用相同的算法和密钥重新计算签名
  • 将计算结果与Token中的Signature进行对比
  • 如果两者完全一致,说明Token未被篡改

在本工具中,输入正确的密钥后点击"验证签名",工具会自动完成以上步骤并显示验证结果。

none算法有什么风险?

none算法表示Token没有签名,存在严重安全风险:

  • 攻击者可以修改Payload中的任何字段(如用户ID、权限)
  • 如果服务器未正确验证算法类型,可能接受被篡改的Token
  • 这是一种常见的JWT攻击向量,称为"算法混淆攻击"

本工具检测到none算法时会显示醒目的安全警告,提醒您检查服务器配置。生产环境应禁止接受none算法的Token。