微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

PHP password_verify真的安全吗?加另一种盐?

我一直在阅读它是如何工作的,它在如何减慢暴力尝试方面真的很酷,但它仍然感觉不安全.

让我们说有人偷了我的数据库数据,包括我的所有用户密码哈希,并知道我使用password_hash来哈希我的密码.他不能用他的字典和password_verify循环访问我的密码来获取访问权限吗?

在散列密码之前添加一个盐是一种好习惯吗?

解决方法:

添加到@adeneo的答案,

bcrypt,pbkdf2,scrypt和现代密码散列策略的要点是缓慢的.

是的,如果从数据库(sqli)获得结果哈希,您只需尝试密码并尝试验证每个密码.

但是,只是尝试密码有点轻描淡写.我们来看看一些数学.

使用bcrypt的password_hash()的认成本大约需要0.1秒来散列密码.这意味着验证密码哈希需要大约0.1秒.

英语中大约有1,000,000个单词.要尝试每一个,您需要验证1,000,000次.每秒0.1秒,即100,000秒(约27小时).

对于泄露的单个密码哈希,有1,000,000个猜测需要27个小时.由于每个哈希都带有一个salt,攻击者需要为每个泄漏的哈希重复这些猜测.

如果您的数据库有100万用户,只需要针对密码尝试字典就需要76,000个cpu年(一个cpu为76,000年,76,000个cpu为1年,或者之间的任何交易).

从正确的角度来看,25 GPU cluster上的md5()每秒可以进行大约180,000,000,000个猜测.要检查数百万字典条目与DB中的百万哈希值,它需要大约5.5秒.

137 GPU秒与76,000 cpu年.这就是使用bcrypt的原因.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐