时间戳重放攻击java_重放攻击(ReplayAttacks)
重放攻击(Replay Attacks)
1.什么是重放攻击
顾名思义,重复的会话请求就是重放攻击。
可能是因为⽤户重复发起请求,也可能是因为请求被攻击者获取,然后重新发给服务器。
2.重放攻击的危害
请求被攻击者获取,并重新发送给认证服务器,从⽽达到认证通过的⽬的。
我们可以通过加密,签名的⽅式防⽌信息泄露,会话被劫持修改。但这种⽅式防⽌不了重放攻击。
3.重放攻击的防御
1)时间戳验证
请求时加上客户端当前时间戳,同时签名(签名是为了防⽌会话被劫持,时间戳被修改),服务端对请求时间戳进⾏判断,如超过5分钟,认定为重放攻击,请求⽆效。
时间戳⽆法完全防⽌重放攻击。
2)序号
顾名思义,在客户端和服务端通讯时,先定义⼀个初始序号,每次递增。这样,服务端就可以知道是否是重复发送的请求。
3)挑战与应答的⽅式
我们⼀般采⽤这种⽅式来防御重放攻击。
客户端请求服务器时,服务器会⾸先⽣成⼀个随机数,然后返回给客户端,客户端带上这个随机数,访问服务器,服务器⽐对客户端的这个参数,若相同,说明正确,不是重放攻击。
这种⽅式下,客户端每次请求时,服务端都会先⽣成⼀个挑战码,客户端带上应答码访问,服务端进⾏⽐对,若挑战码和应答码不对应,视为重放攻击。
4)Https防重放攻击
对于https,每个socket连接都会验证证书,交换密钥。攻击者截获请求,重新发送,因为socket不同,
java生成随机数的方法密钥也不同,后台解密后是⼀堆乱码,所以https本⾝就是防⽌重放攻击的,除⾮能复制socket,或者进⾏中间⼈攻击。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论