Web 安全与身份验证
•
•
15 min read
解码 JWT:令牌背后的编码逻辑
JWT 不是加密,而是编码。理解这一点,是你掌握现代 Web 安全的第一步。
如果你是一个 Web 开发者,你肯定见过那一长串由两个点分隔开的乱码字符串——JWT (JSON Web Token)。它就像是用户的电子通行证。但你是否好奇过,为什么它长成那个样子?为什么它可以在 URL 中安全地传输?这就要提到 Base64 的一个特殊变体:Base64URL。
1 三段式结构:Header, Payload, Signature
JWT 的本质是将三个 JSON 对象进行编码并拼接。第一段告诉服务器加密算法,第二段存储用户信息,第三段则是防伪签名。前两段仅仅是编码而已,这意味着任何人只要拿到了你的 Token,都可以通过解码看到里面的内容。
2 Base64 vs Base64URL
标准的 Base64 包含 `+` 和 `/` 字符,这些字符在 URL 中有特殊含义(比如空格或路径分隔符)。为了让 Token 能在链接里安全传递,JWT 采用了 Base64URL 编码:它去掉了末尾的 `=` 填充符,并将 `+` 替换为 `-`,将 `/` 替换为 `_`。
3 安全警示
因为 Header 和 Payload 是透明的,所以**绝对不能**在 JWT 中存储密码、密钥等敏感信息。JWT 的核心价值不在于秘密,而在于通过 Signature 保证了内容没有被中途篡改。
4 结语
理解了编码原理,你就能更从容地调试身份认证问题。使用 Ego Toolbox 的『Base64 编解码工具』,你可以轻松拆解任何 JWT 令牌,实时验证其中的声明信息。记住,安全从来不是一种状态,而是一系列正确决策的累加。