JWT 基本知识
JWT 基本知识
WT(JSON Web Token)是一种用于身份认证和信息传递的开放标准(RFC 7519)。它的主要优缺点如下:
优点:
- 无状态 & 可扩展性:JWT 是自包含的,不需要存储在服务器上,适用于分布式系统(如微服务架构)。
- 安全性:支持 HMAC、RSA 等加密签名方式,确保数据完整性和可信性。
- 高效性:采用 JSON 格式,数据结构紧凑,适合在网络中传输,减少带宽消耗。
- 跨平台 & 语言无关:JWT 基于标准化的格式,可在不同编程语言间使用(如 Python、Java、Node.js 等)。
- 易于前后端分离:JWT 可存储在客户端(如浏览器 localStorage 或 HTTP cookie),适合前后端分离的架构。
- 支持自定义声明(Claims):可以在 JWT 中加入自定义字段,如用户角色、权限等信息,无需频繁查询数据库。
缺点: - 安全风险:
- 如果 JWT 泄露,攻击者可伪造请求(因为 JWT 通常长期有效,不能轻易撤销)。
- 需要妥善存储(如避免存储在 localStorage,防止 XSS 攻击)。
- 不能轻易撤销:传统的 Session 可以随时删除,而 JWT 是无状态的,一旦签发,无法强制让其失效(除非使用黑名单或短生命周期 + 刷新机制)。
- 数据冗余:JWT 包含完整的用户信息,每次请求都需要传输整个 Token,可能导致较大的网络开销。
- 复杂性:相比传统 Session 机制,JWT 的管理(如签名、加密、刷新机制等)较复杂,需要额外的安全策略。
- 存储问题:
- 存储在 localStorage 可能被 XSS 攻击窃取。
- 存储在 HTTP-only Cookie 可以防止 XSS,但可能受 CSRF 攻击影响。
总结:JWT 适用于无状态认证、微服务、API 网关等场景,但要结合安全措施(如短生命周期、刷新 Token、存储策略等)来降低风险。