用户登录注册时,导致数据库中数据泄露的几种方式:
- 字典攻击
- 暴力破解
- 查询表
- 彩虹攻击(目前这个还没理解原理)
为了加强用户登录注册时的安全性,通常不会在数据库中存储用户的明文密码,当服务器接收到用户发送过来的请求时,会将用户密码进行加密(比如采用MD5加密)。加密后的字符串还是很容易就可以被黑客攻击,因为对于相同的密码字符串,通过MD5加密之后,生成的加密字符串是完全一样,这样对于黑客来说,太容易破解你的加密算法,然后就可以针对你的加密算法设计解密程序,从而导致该网站用户信息的泄露。所以,我们一般会先加盐,也就是产生随机的字符序列,然后和我们要加密的字符序列组成一个字符串,再采用加密算法算法进行加密,这样因为有随机序列的影响,使得最终生成的加密字符串是变化的。
我们知道,任何一种加密都是可以通过字典或暴力攻击的方式破解,只是需要时间罢了,短则几微秒,长则几天,几年。下面简单说一下上面提到的几个攻击方式。
字典攻击,就是将人们常用的单词或短语,以各种可能的方式组合,通过加密后生成的字符串与数据库中保存的字符串进行对比,验证密码的正确性。
暴力攻击,就是所有可能字符的排列组合,效率一般比较慢,但是如果时间足够,采用暴力攻击是可以破解的。
字典和暴力攻击的共同点就是,先生成密码的各种组合,再加密比较加密后的字符串,而查询表则是先将可能的密码和加密字符串存储起来,然后将加密字符串和数据库中加密串进行对比,查找成功后再在自己的数据表里找到对应的明文密码,进而达到破解的目的。
彩虹攻击就先不说了,自己也还没理解,后续再补充吧。