防重放攻击手段

一、基于时间戳解决方案

1、一次正常的http请求, 响应时间般在5s内完成, 基本上不会超过60s, App根据自己接口的响应时间设置阀值
2、客户端每次发起清求,携带当前时间载
3、服务器接收请求后,校验客户端时间戳与服务端时间戳的差值,超过了60s既认为是重放攻击
优缺点: 实现简单有效,但在60s内,黑客仍可实现重放攻击,时间戮最好再加盐处理。

二、基于随机数解决方案

1、客户端每次发起请求,都需要携带随机数id (要求唯一即可)
2、服务端接收到请求后,先校验用户携带的随机数id是否存在,不存在,将随机数id存储到数据库或缓存服务器中,存在:既认为是重放攻击
优缺点:实现简单有效,但随着请求量越多,存储的数据会越来越大。

三、基于流水号解决方案

1、客户端、服务端在报文中添加一个逐步递增的整数,只要接收到一个不连续的流水号报文,即认定有重放威胁。
优缺点:优点是不需要时间同步,保存的信息量比随机数方式小;缺点是一旦攻击者对报文解密成功,就可以获得流水号,从而每次将流水号递增欺骗认证端。

四、基于时间戳和随机数的解决方案

1、一次正常的http请求,响应时间一般在5s内完成,基本上不会超过60s, App根据自己接口的响应时间设置阀值
2、客户首每次发起请求,携带当前时间戳和随机数id
3、服务端接收请求后,先校验客户端时间戳与服务端时间戳的差值,超过了60s既认为是重放攻击,若未超过60秒,则校验用户携带的随机数id是否存在,不存在,将随机数id存储到数据库或缓存服务器中,存在认为是重放攻击。

猜你喜欢

转载自blog.csdn.net/u010671061/article/details/132508800