sam*_*ami 5 php security hash salt
这看起来像是一个安全的盐与密码一起使用?任何改进或建议或明显的缺陷?
$salt = '';
for ($i = 0; $i < 50; $i++) {
$salt .= chr(rand(33, 126));
}
Run Code Online (Sandbox Code Playgroud)
你不需要长时间制作盐,并且它们在加密方面是安全的并不重要.盐点只是为了让彩虹表攻击变得更难,因为你不再在密码和哈希之间进行一对一的映射.(他们还让管理员在数据库中看到482c811da5d5b4bc6d497ffa98491e38,然后知道Joe的密码是"password123".
即使是一个4字节的盐就足够了,因为你现在拥有2 个32 ×40亿个潜在的任何密码哈希值.
我认为rand不是一个好的PRNG.如果我没记错的话,它直接映射到c PRNG,在许多实现中,它有一个非常小的(如32位)内部状态.
它也没有播种.但是,由于盐的最重要的作用是阻止预先计算的彩虹表,这个代码就是这样,它应该就足够了.
我通常将盐分成两部分:
这样一来,攻击者只能获得对数据库的访问而不是配置文件(如果攻击使用SQL注入的可能情况),那么他仍然无法破解密码.
| 归档时间: |
|
| 查看次数: |
580 次 |
| 最近记录: |