key: 18 title: 安全地传递密码
前端要想安全地将密码传递给后端, 应该按照以下几步操作:
前端
后端
验证密码的时候, 后端只需将第2步去盐后的密码拼上从数据库中取得的盐, 作 md5 哈希后与数据库中的密码相比较即可.
为什么前端要将明文密码作 md5 哈希并拼上盐再加密?
因为公钥是公开的, 而明文秘密是简短并有一定意义的. 如果直接拿明文密码用公钥加密, 黑客就可以截获这个数据包, 然后不断尝试密码, 用公钥加密并和截获的密码相比较, 从而破解密码. 如果密码安全系数低(如生日), 黑客就可以很快破解. 将明文密码 md5 哈希后拼上盐, 密码就变成无意义的了, 破解难度大大提升.
为什么后端要将 md5 后的密码拼上盐再作二次 md5 哈希?
因为前端 md5 时没有拼上盐. 如果直接存储这个密码, 一旦数据库被泄露, 黑客就可以通过不断尝试密码, md5 哈希并与数据库中的密码相比较, 从而破解密码. 所以我们再次拼上盐并作二次哈希, 破解难度大大提升.