JWT 入门与安全边界

理解 JWT 的结构、签名机制、常见风险和安全边界,帮助初学者把令牌认证与权限控制区分开。

写在前面:合法学习边界

本文只讲原理和防御。请不要在真实系统中伪造、猜测、暴力破解或滥用 JWT。所有验证都应在授权靶场或明确授权环境中完成。

一、JWT 是什么

JWT(JSON Web Token)是一种用于声明式传递身份和权限信息的令牌格式。它由三部分组成:

1
2
3
Header
Payload
Signature

通常以 xxx.yyy.zzz 形式出现。

二、JWT 的核心问题

JWT 本身解决的是“身份声明”的传递,不等于完整的安全模型。

常见误解:

1
2
3
有 JWT 就等于安全
JWT 能自动限制权限
JWT 不能被伪造

真正需要同时满足:

1
2
3
4
签名算法正确
密钥安全
过期时间合理
授权仍在服务端做

三、常见风险

1
2
3
4
5
6
alg=none 风险
弱签名密钥
过期时间过长
权限放在 token 里但不做服务端校验
没有撤销机制
泄露后难以失效

影响与危害

JWT 相关问题能造成:

1
2
3
身份伪造(alg=none、弱密钥)
越权访问
会话劫持

风险等级:中到高。

四、防御建议

1. 固定签名算法

不要允许客户端随意选择算法。

2. 密钥安全

使用足够强度的密钥并定期轮换。

3. 设置过期时间

token 要有合理有效期。

4. 权限仍在服务端校验

JWT 只能携带声明,不应替代授权判断。

5. 支持撤销和吊销

高风险场景需要撤销机制。

修复

1
2
3
4
5
固定签名算法,禁止客户端选择
使用高强度密钥并轮换
设置合理过期时间,支持撤销
权限仍在服务端校验
修复后复测:伪造 token 不再被接受

五、报告中的正确写法

示例:

1
2
3
发现:/api/me 接受签名算法 none 或错误配置,导致客户端可伪造身份声明。
风险:可能导致身份伪造、越权访问或会话劫持。
建议:固定签名算法;服务端校验签名;限制过期时间;支持撤销。

六、小结

JWT 是工具,不是安全边界。它最适合做“可验证声明”,但权限、撤销和风险控制仍要在服务端完成。

本站使用「署名 4.0 国际」创作共享协议,可自由转载、引用,但需署名作者且注明文章出处