JWT重放漏洞概述
- 概念:JWT(JSON Web Token)是Web应用广泛使用的身份验证令牌。
- 重放攻击:攻击者截获JWT后,利用其有效性冒充用户执行操作。
重放攻击的危害
- 权限滥用:攻击者可越权操作,如非法登录、数据篡改、金融交易等。
- 资源耗尽:大规模攻击可导致服务器资源被占用,降低性能,可能引发DoS攻击。
- 业务逻辑漏洞放大:系统业务逻辑缺陷可能被利用,造成更大损失。
防御措施
-
时间戳与有效期结合
- JWT中添加"发行时间"(iat)和"过期时间"(exp)。
- 验证时检查当前时间与iat的时间差是否合理。
-
使用一次性Token(Nonce)
- 对重要操作引入一次性使用的随机Nonce值。
- 服务器验证JWT时确认Nonce未被使用过。
-
实施滑动窗口策略
- 设定时间窗口(如5分钟),只允许窗口内的JWT有效。
- 每验证一个JWT,窗口向前滑动,抛弃旧JWT。
-
增强业务逻辑防护
- 对敏感操作进行幂等性设计,确保同一操作多次执行结果一致。
- 例如,订单支付操作应确保同一笔订单不能被多次支付。
-
引入Token黑名单机制
- 将已撤销或过期的JWT加入黑名单,定期更新。
- 请求时检查JWT是否存在于黑名单中。
安全意识
- 理解JWT重放漏洞原理,采取针对性防御措施。
- 系统安全无小事,每一处细节都至关重要。
- 审视系统,及时打补丁,增强安全性。