前言
保护一个网站的安全,是多方面的努力,如何保障数据不被拖库,这里就不讲了。
首先来说说密码加密,现在很少有系统会直接保存用户的密码了。至少也应该是计算密码的MD5/SHA哈希后保存。这种不可逆的加密方法理论上已经很安全了,但是随着彩虹的出现,GPU并行计算能力的不断提升,使得大量长度不够的密码可以直接从彩虹表反推出来。
安全的终极目的:
即使在数据被拖库,代码被泄露,请求被劫持的情况下,也能保证用户的密码不被泄露。
具体来说,我们的心中的安全系统大概是这样的:
1. 首先保障数据很难被拖库。
2. 即使数据被拖库,攻击者也无法从中破解出用户的密码。
3. 即使数据被拖库,攻击者也无法伪造登录请求通过验证。
4. 即使数据被拖库,攻击者劫持了用户的请求数据,也无法破解出用户的密码。
加盐Hash的应用
只对密码进行哈希运算时肯定的不够,这样程序员想出了一个办法,即使用户的密码很短,只要我在他的短密码后面加上一段很长的字符,在进行HASH运算,那么反推出原始密码就非常困难了。加上的这段长字符,我们称为盐(Salt),通过这种方式加密后,我们称为加盐Hash,例如:
SHA512(SHA512(Password)+ Salt)
通过以上加盐运算,即使攻击者拿到最终结果,也很难反推出原始的密码。不能反推,但是可以正推,假设