抱歉,这可能很愚蠢,但是我对 Phpass 有一些不明白的地方。如果我可以像这样创建一个安全的散列密码:
$pwdHasher = new PasswordHash(8, FALSE);
$hash = $pwdHasher->HashPassword( $password );
然后像这样检查它:
$checked = $pwdHasher->CheckPassword($password, $hash);
那么这意味着从逻辑上讲,密码必须以只能在特定机器上读取的方式存储(否则有人可以在另一台机器上使用“CheckPassword”功能来获取密码)。Phpass 是如何做到这一点的?
如果我将来需要将网站移动到新服务器上,这不会造成问题吗?如何安全地备份我的数据库,以便在发生重大服务器故障时,我可以恢复所有密码?(我是否遗漏了一些明显的东西?)
编辑 - 回应下面的评论,如果不同的机器不影响它,那么如果黑客可以访问我的数据库,为什么他们不能在自己的机器上执行 CheckPassword 来获取原始密码?抱歉,我一定遗漏了一些明显的东西。
编辑 2 - 该死,我错过了一些明显的东西。compare 函数只检查给定的密码和散列密码并返回 true 或 false - 您实际上不必访问密码本身。为自己笨而道歉!