密码历史以防止用户一次又一次地保留相同的密码

Password history to prevent user to keep same passwords again and again

我正在 PHP Laravel 开发应用程序。它使用 bcrypt 加密来存储密码。每当用户更改密码时,我都想保留哈希的历史记录。通过这样做,我想阻止用户在某些情况下输入以前的密码。保留哈希历史是否安全?

我正在使用内置函数。我对这种加密了解不多。根据我的观察,如果用户更改了他的密码并保持与以前的密码相同,则哈希值会不同。我怎样才能阻止他保留以前历史记录中的相同密码?使用 bcrypt 加密时可以吗?

是的,那是完全安全的。您可以使用 Hash::check() 将新密码与旧密码进行比较。例如像这样($hashes 是一个旧哈希数组)

$newPassword = 'secret';
foreach($hashes as $hash){
    if(Hash::check($newPassword, $hash)){
        exit('Sorry can\'t use the same password twice');
    }
}

有一个名为 laravel-password-history

的 laravel 软件包

您可以安装并享受它。 它为您提供事件侦听器、迁移、验证规则等。它还可以配置为检查历史记录中的某个深度。