12.4 密码加密存储方式

从各大社工库交易论坛来看,目前每天都有不少网站被拖库,其中不乏行业影响力排行靠前的企业网站,总计公开的数据库达十亿条以上,如图12-6和图12-7所示。

图 12-6

图 12-7

密码安全的存储成为了保障用户信息安全首要关注的事情,据笔者的统计分析,泄露的数据有30%未加密,60%以上采用的MD5和sha1类型的哈希算法存储,由于普通用户的密码普遍不会很复杂,保守估计90%以上的用户密码可以轻松被解密,有多家网站专门提供密码破解的服务,像cmd5.com、xmd5.org等,其中cmd5.com更是号称破解成功率高达95%,既然用户自己不会设置高强度的密码,那服务方应该想办法解决这个问题,一是采用高强度安全环境保存,数据仍然是普通MD5等算法保存,不过谁也无法保证100%安全,这种做法看起来有鸡肋的感觉,另外一种做法就是为密码加一个极其复杂的固定字符串,再进行MD5或者sha1算法进行保存,这样通过枚举的方式就很难解密,举一个例子,代码如下:


< php

$password=$_POST['password']


$safestr = "0123456789abcdefghijklmnopqrstuvwxyz~
@#$%^&* () _+}{.| "

$salt=""


for
$i=0 $i<6 $i++

{

      $salt .= $safestr[rand
0 54 ]

}

$password=md5
md5 $password.'*5t42g^_^$$FFSD' .$salt );

echo $password
;? >

将生成的salt存入数据库中,后期验证过程中将salt取出重新用MD5运算一下,对比结果即可知道密码是否正确。