网络攻击之防重放篇~

百度百科介绍

重放攻击(Replay Attacks)又称重播攻击、回放攻击,是指攻击者发送一个目的主机已接收过的包,来达到欺骗系统的目的,主要用于身份认证过程,破坏认证的正确性。重放攻击可以由发起者,也可以由拦截并重发该数据的敌方进行。攻击者利用网络监听或者其他方式盗取认证凭据,之后再把它重新发给认证服务器。重放攻击在任何网络通过程中都可能发生,是计算机世界黑客常用的攻击方式之一。
核心概念
在这里插入图片描述
一、基于timestamp解决方案

1.一次正常的http请求,响应时间一般在5s内完成,基本上不会超过60s,我们根据自己接口的响应时间设置阈值
2.客户端每次发起请求,携带当前时间戳
3.服务端接收请求后,我们校验客户端时间戳与服务端时间戳的差值,超过了60s既认为是重播攻击

总结:实现简单有效,但在60s内,黑客仍可实现重播攻击,时间戳最好再加盐处理。
Java代码示例

if((服务器当前时间戳-用户携带的时间戳) > 60){
return “非法请求”;
}else{
return “请求成功”
}

二、基于nonce解决方案

1.客户端每次发起请求,都需要携带uuid(要求唯一即可)
2. 服务端接收到请求后,先校验用户携带的uuid是否存在,不存在:将uuid存储到数据库或缓存服务器中,存在:既认为是重播攻击

总结:实现简单有效,但随着请求量越多,存储的数据会越来越大。
Java代码示例

Uuid uuid= UuidMapper.select(uuid);
if(uuid!= null){
return “非法请求”;
}else{
UuidMapper.insert(uuid);
return “请求成功”
}

三、基于timestamp和nonce解决方案

总结:结合以上两种方案,并定期清理缓存。
Java代码示例

if((服务器当前时间戳-用户携带的时间戳) > 60){
return “非法请求”;
}
if(uuid!= null){
return “非法请求”;
}else{
保存uuid并设置缓存失效时间;
return “请求成功”
}

————————————————
版权声明:本文为CSDN博主「柏君~」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_42806958/article/details/118971184

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值