Passwords 防止用户重复使用泄露的密码

Passwords 防止用户重复使用泄露的密码,passwords,Passwords,假设您存储散列和盐渍密码,例如使用Bcrypt。有一天,您了解到用户Bob的密码已被泄露。您将他的密码设置为强随机字符串,并通知他必须重置密码。到目前为止还不错 但是Bob经历了密码重置过程,并输入了相同的密码。现在他的账户又一次受到攻击者的摆布 可以防止Bob再次使用相同的密码吗?如果没有盐,那就很简单了。您可以记录旧的、泄露的散列,并将其与Bob试图输入的新密码的散列进行比较。但用盐,这似乎不可行 这是一个无法解决的问题吗 编辑:我想我是傻了。我不知道为什么我认为这和登录时检查密码有什么不同

假设您存储散列和盐渍密码,例如使用Bcrypt。有一天,您了解到用户Bob的密码已被泄露。您将他的密码设置为强随机字符串,并通知他必须重置密码。到目前为止还不错

但是Bob经历了密码重置过程,并输入了相同的密码。现在他的账户又一次受到攻击者的摆布

可以防止Bob再次使用相同的密码吗?如果没有盐,那就很简单了。您可以记录旧的、泄露的散列,并将其与Bob试图输入的新密码的散列进行比较。但用盐,这似乎不可行

这是一个无法解决的问题吗


编辑:我想我是傻了。我不知道为什么我认为这和登录时检查密码有什么不同。正如martinstoeckli所说,只要你还有旧的散列和salt,你就可以将用户的输入与之进行比较。

只要保留旧的密码散列,并执行与验证登录密码相同的步骤。这也适用于salt密码散列,这种情况与登录验证没有什么不同。

您可以存储一些以前使用的密码散列,并对照它们检查新密码。