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

Bot*_*ázs 3 security passwords session forgot-password password-recovery

我刚读了以下内容:

并且不要在你的数据库中存储持久的登录COOKIE(令牌),只是它的一大堆!登录令牌是密码等效,因此如果攻击者抓住您的数据库,他/她可以使用令牌登录任何帐户,就像他们是明文登录密码组合一样.因此,在存储持久登录令牌时使用强盐水散列(bcrypt/phpass).

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

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

aus*_*tin 8

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

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