定义
API重放攻击(Replay Attacks)又称重播攻击、回放攻击,这种攻击会不断恶意或欺诈性地重复一个有效的API请求。攻击者利用网络监听或者其他方式盗取API请求,进行一定的处理后,再把它重新发给认证服务器,是黑客常用的攻击方式之一。
工作原理
重放攻击的示意图如下所示:
从上面的示意图中我们可以知道,一般的重放攻击主要有下面几个步骤
- 浏览器和服务器进行身份认证之后使用接口请求正常通信
- 黑客通过非法手段窃听了浏览器和服务器的会话,获取了比如身份认证信息,API接口以及对应的参数
- 黑客获取窃听的数据之后进行了一定的处理再冒充浏览器重新发送请求给服务器
危害
- 用户被多次消费(下单动作,支付动作)
- 用户登录态被盗取(登陆的请求被抓住,被攻击者再次发送,相当于攻击者拥有了登录态)
- 多次抽奖/刷票/抢票
防御对策
时间戳验证
请求即便被抓住,再次被发送的时候会有时间差。比如浏览器向服务器发送请求时,会在消息中添加当前的时间戳,而服务器也只会接受时间戳在合理范围内的请求。
当然对应的缺点就是,如果重放攻击执行的足够快(请求还在“合理”的时间内),那也是可以成功的
一次性密码(number once)
只有一次,类似token。一串唯一的只能用一次的字符串。再次用这个number的话那就无效
其他
- 使用HTTPS可以防止明文数据被监听。但是却防止不了重放攻击。
- 使用签名之后可以验证请求者的身份,但也防止不了重放攻击,攻击者截获请求后,不对请求进行任何调整。直接使用截获的内容重新高频率发送请求。
参考文档
重放攻击
阿里云-重放攻击预防
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net