API接口的防重放

我们在设计API接口时,最怕的莫过于同一个接口给用户截获重放提交,那什么是重放提交:对同一个请求发送多次到后台,对系统产生异常影响。

应对的策略有:
1使用时间戳timestamp。
2使用nonce,什么是nonce呢? nonce = MD5(timestampe+rand(0,1000))
3使用timestamp+nonce
通常是使用第三种的方法去处理。

服务端
1第一次接受请求,对请求的timestamp进行规定时间如60s检验,如果符合那就进行下一步操作。
2对nonce的处理,针对nonce访问redis判断是否存在,如果不存在,表示第一次访问,并在redis中插入nonce和设置过期时间如60;如果存在表示重复提交。
也需要考虑请求参数被篡改,使用sign签名对上面的参数进行一个校验。

你可能感兴趣的:(java,javaweb)