为什么要存储持久登录 cookie 和密码重置令牌的哈希值



我刚刚阅读了以下内容:

并且不要将持久登录 COOKIE(令牌)存储在您的数据库中,而只是它的哈希值!登录令牌是密码等效的,因此如果攻击者获得了他的 动手在您的数据库上,他/她可以使用令牌登录到任何 帐户,就像它们是明文登录密码组合一样。 因此,在存储时使用强加盐哈希(bcrypt/phpass) 持久登录令牌。

(在这个答案中:https://stackoverflow.com/a/477578/943102)

我认为应该使用哈希,因为人们在多个站点上使用相同的密码,并且可以防止攻击者闯入同一用户的其他帐户。由于登录令牌是随机值,因此在这种情况下不存在此风险。我显然错过了一些东西,但我找不到有关此的任何进一步信息。有人可以解释一下吗?

假设您是一名 Web 应用程序开发人员,并且您做了正确的事情,并且您只将用户密码的哈希存储在数据库中(不是明文),但您决定将其经过身份验证的登录令牌存储在数据库中而不对其进行哈希处理。

现在,假设恶意攻击者闯入 Web 应用程序的数据库并执行转储并与 Web 上的恶意攻击者好友共享。 好吧,这些密码哈希对他没有多大好处,因为他无法使用哈希登录。 但他看到这些登录令牌是以纯文本形式存储的。 现在,对他来说,将一个放在cookie中并将其与HTTP请求一起发送到服务器是微不足道的。 服务器将获取 cookie,根据数据库对其进行身份验证,并允许攻击者进入。 因此,即使这些登录令牌只是随机值,一旦攻击者拥有它们,他或她就可以使用它们来模拟经过身份验证的用户。

最新更新