我引用了这个答案:https ://stackoverflow.com/a/4766811/1114105
我们重新对密码进行哈希处理,但实际上我们并没有对哈希做任何事情(我们在 CheckPassword 函数中使用 POST 提交的明文密码进行身份验证)。黑客不能绕过重新散列部分吗?
下面是我的伪代码。
如果密码/用户名由 POST 提交,并且 $row['password'] 是 sql 中的散列密码。
$t_hasher = new PasswordHash(13, FALSE);
$hash = $t_hasher->HashPassword($_POST['password']);
$check = $t_hasher->CheckPassword($_POST['password'], $row['password']);
if($check) Great success else Wrong credentials`
注意:我发现工作因素对 CheckPassword 运行的时间没有影响。它只会增加 HashPassword 的时间。