重放攻击
大约 3 分钟
1、概念
重放攻击(Replay Attacks)又称重播攻击、回放攻击,是指攻击者发送一个目的主机已接收过的包,来达到欺骗系统的目的,主要用于身份认证过程,破坏认证的正确性。
重放攻击可以由发起者,也可以由拦截并重发该数据的敌方进行。攻击者利用网络监听或者其他方式盗取认证凭据,之后再把它重新发给认证服务器。
重放攻击在任何网络通过程中都可能发生,是计算机世界黑客常用的攻击方式之一。
(来自百度百科)
2、来源
一个存在安全漏洞的登录系统:
前端web页面用户输入账号、密码,点击登录。
请求提交之前,web端首先通过客户端脚本如javascript对密码原文进行md5加密。
提交账号、md5之后的密码
请求提交至后端,验证账号与密码是否与数据库中的一致,一致则认为登录成功,反之失败。
解析:
目前的腾讯电脑管家,360等软件,会将你的网络请求原封不动的发送到他们的后端保存一份、当然不止这些安全软件,其他软件也可以做到。这样就会将你的账户就很容易被别人使用。
这样的话md5加密就起不到任何作用了。
So:
我们考虑加入盐值,登录时候,session(或者redis缓存)中存一份随机数(称为盐值)。同样的盐值页面中也存在一份。所以我们不仅仅考虑用户名和md5密码了,还需要一份盐值作为网络请求的身份参照物,这样做稍微安全一些。
More:
存在简单md5暴力破解的时候,我们需要增强密码强度。但是用户不喜欢这样,就需要我们自己加盐值。
如:MD5(固定盐值+密码)
More and More:
加时间戳和流水号;
一应答机制和一次性口令机制(应用广泛)
3、分类
重放攻击可以是登录认证,也可以是其他方式,
从用户端考虑或从服务端考虑也会不同,
当然会会有不同的分类。
任性不提。。。
4、一次应答机制
用验证码代替时间戳,将密码通过md5算法加密,再将验证码加在后面,然后再用md5算法加密,在网络传输过程中以密文的形式传输到后台管理。
后台数据库保存的是用md5算法加密的密码,将该密文加上保存在session(或redis)失效范围内的验证码用md5算法加密,得到的密文与请求中的口令对比,如配对,则验证成功,否则,验证失败。