PHP/WEB: 如何存储哈希密码

PHP/WEB: How to store hashed passwords

我了解如何在 php 页面上 hash/salt/etc 密码。但是,我不知道如何实际存储这些密码

例如,如果我只需要让 PHP 文档根据另一个密码(存储在服务器上)验证一个密码,我该如何实际存储需要验证的密码?如果我只是将它放在一个文件中,那么有人可以阅读源代码 PHP 来找到该文件,读取该文件,然后发送一个带有散列密码的假 POST。如果我给它加了盐,他们只需要阅读源代码然后去掉盐。他们能看到 PHP 来源吗?

希望这是有道理的。我只需要知道如何在我的网络服务器上存储 hashed/salted 密码。我可以将它们放在 .txt 中吗?如果有人读了那个 .txt 会发生什么,他们不能只发送一个假的 POST 并且服务器会接受它吗??

提前致谢!

  1. 不要将它们放在 .txt 文件中。至少不在可通过网络访问的目录中。我建议将它们存储在数据库中。

  2. 如果有人确实获得了您的密码哈希值,他们将无法使用它登录,至少不能直接登录,因为您在验证密码时会重新哈希哈希值,从而产生一个不同的、不匹配的散列。然而,访问密码散列确实使通过字典或暴力破解实际密码变得容易得多,因为检查密码是否匹配可以在本地完成,不需要向您的服务器发出请求.出于这个原因,请务必保持哈希值的合理安全,如果它们确实被泄露,请强制您的用户重置密码。

顺便说一下,您不必担心用户能够查看您的 PHP 源代码,除非他们能够在您的代码中找到会泄露源代码的漏洞。