Account Security
JWT 签名验证:防篡改原理
做店铺后台或者对接第三方 API 时,经常碰到 JWT。它分三段,前两段是头部和载荷,最后一段是签名。签名是用密钥对前两段算出来的,服务器收到后自己再算一遍,对不上就说明内容被改过。
我第一次看 JWT 觉得那段乱码似的字符串是加密,其实它默认只是 base64 编码,谁都能解开看。真正防篡改的是签名那段。用本地 JWT 解码器把 token 贴进去,能直接看到过期时间和用户字段,方便排查登录失效的问题。
验证签名关键在密钥不能泄露。很多新手把 secret 写在前端代码里,等于把家门钥匙挂门口。正确做法是在服务端存密钥、本地只做解码查看,绝不把签名密钥带到浏览器环境。
解码时重点看 exp 和 iss 两个字段。exp 是过期时间,过了就失效;iss 是签发方,能确认 token 是不是自己系统发的。这些都在本地一眼看完,不用把 token 发给任何在线工具,避免凭证外泄。
把 JWT 当带防伪标签的票据理解最直观:内容谁都能读,但没人能偷偷改了还不留痕迹。日常排查接口 401,先本地解码看是否过期,比盲目重试接口高效得多,也无需把敏感 token 上传。