togotools.top 技术参考
技术参考
在浏览器本地解码 JWT 的 Header 和 Payload,检查 exp、nbf、iat 等 NumericDate 声明,并用共享密钥验证 HS256、HS384 或 HS512 签名。解码不等于信任,签名验证必须使用可信密钥。
能检查什么
- 解析 JWT 的三段结构:Header、Payload 和签名。
- 把 exp、nbf、iat 转换为可读时间,并标记过期或尚未生效状态。
- 使用输入的共享密钥执行 HS256、HS384、HS512 HMAC 验签。
- 所有 token 和密钥只在当前浏览器处理;页面不会向 token 的 issuer 发请求。
示例:检查过期声明
exp 是 Unix 时间戳(秒),表示 token 失效时间;nbf 表示生效时间。实际认证还受到服务端时钟偏差、撤销策略和权限检查影响。
{
"sub": "user-123",
"iat": 1767225600,
"exp": 1767312000
}安全边界
JWT 的 Payload 通常只是 Base64URL 编码,不是加密内容。任何拿到 token 的人都可以读取其中的非敏感字段,因此不要把密码、私钥或不必要的个人数据放入 Payload。
- 只有使用正确的算法、可信密钥和服务端签名规则验证成功,签名结果才有意义。
- 不要仅根据 alg 字段或解码结果判断 token 可信。
- 在公共电脑或共享浏览器中处理真实生产 token 后,应清空输入并关闭页面。
常见问题
只解码 JWT 能证明它有效吗?
不能。解码只读取 Header 和 Payload,不能证明签名正确、token 未被撤销或用户仍有权限。
为什么 exp 看起来是很大的数字?
JWT NumericDate 使用 Unix 时间戳,通常是从 1970 年开始计算的秒数,不是毫秒。