php - 在登录时重新散列随机加盐的密码会增加安全性吗?

标签 php security hash salt

我目前正在用 PHP 开发一个项目,想知道如何使我的系统尽可能安全。我目前正在使用 password_hash 来散列我的密码,然后将它们存储在我的数据库中。我想知道的是:将新的加盐哈希值重新散列并重新保存到数据库是否会提高安全性,还是这只是一种错觉?

最佳答案

我不认为它会增加安全性,不。您有两种风险情况:

  • 破解者闯入服务器并在那里停留了一段时间未被发现。在这种情况下,密码可以在用户登录时以编程方式捕获。这比暴力破解强哈希算法需要更少的努力。
  • 破解者闯入,窃取了数据库的副本,作为回应,系统管理员堵上了安全漏洞并迅速从备份中恢复了服务器。

在第二种情况下,破解者有一组用户名、电子邮件地址和散列密码,他们可能希望尝试暴力破解。如果这些哈希被创建一次或一千次,则没有任何优势。

值得记住我们​​在这里试图防范的事情。如果某个网站的安全性遭到破坏,则会对在其他流行服务中使用相同用户名/密码组合的用户产生链式 react 。散列的一个主要原因,以及攻击者在暴力破解密码中的目的,是查看用户是否可以在其他地方(例如他们的社交媒体或银行帐户)被黑客攻击。

这就是为什么我们建议人们不要重复使用密码,而应该使用存储在密码管理器中的强密码。如果人们可以为每个服务使用不同的用户名和/或不同的电子邮件,那就更好了。顺便说一句,为每个服务使用一个电子邮件非常容易:如果您在 GMail 上的地址是 gmail.alias@gmail.com,只需这样做:

gmail.alias+randomcode@gmail.com

电子邮件当然应该存储在您的密码管理器中 - 如果您忘记了这一点,您将无法使用密码提醒功能,并且您将被锁定,除非该服务愿意接受其他一些身份证明。尽管如此,这种方法更能抵御使用被破坏的服务的链式 react - 如果用户总是使用不同的电子邮件地址,那么其他地方的弱密码提醒系统将更难被利用。

拥有自己域名的用户可以做类似的事情 - 设置一个电子邮件帐户以“捕获所有”,然后使用您喜欢的任何别名。

关于php - 在登录时重新散列随机加盐的密码会增加安全性吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31829235/

相关文章:

php - Symfony2 项目中基于 Doctrine 的认证机制

java - 黑莓应用安全

linux - 未设置已创建文件的 SMACK 标签

c - 如何为另一个结构体中的结构体分配内存?

php - 如何在服务器目录联系表 7 上保留上传的文件或附件

PHP,数组操作来获取所有相同名称的键

ruby-on-rails - 如何检查一个散列是否包含在另一个散列中的 "completely"?

java - 如何在 Java 中创建泛型二维数组

php/mysql - 从一个表中选择 id 除了在另一个表中的 id

c# - 防止 wtrealm 中的跨站点脚本编写