Security 在cookie中存储(散列)密码安全吗?

Security 在cookie中存储(散列)密码安全吗?,security,cookies,hash,session,passwords,Security,Cookies,Hash,Session,Passwords,我读过一些关于SO(例如)的文章和问题,它们说你不应该在cookie中存储用户的密码。如果密码是经过盐渍和哈希处理的,为什么这是不安全的 特别是,为什么它比使用会话的安全性要差呢?如果用户希望保持登录状态,那么这个新cookie(带有会话ID/哈希)肯定和带有用户密码的cookie一样安全吗?如果cookie以某种方式“被盗”,则攻击者可以以相同的方式以用户身份登录 编辑:问题的关键是关于用户保持登录的部分,即通过“记住我?”复选框。在这种情况下,肯定只有一个会话?除其他区别外,如果存储了会话,

我读过一些关于SO(例如)的文章和问题,它们说你不应该在cookie中存储用户的密码。如果密码是经过盐渍和哈希处理的,为什么这是不安全的

特别是,为什么它比使用会话的安全性要差呢?如果用户希望保持登录状态,那么这个新cookie(带有会话ID/哈希)肯定和带有用户密码的cookie一样安全吗?如果cookie以某种方式“被盗”,则攻击者可以以相同的方式以用户身份登录


编辑:问题的关键是关于用户保持登录的部分,即通过“记住我?”复选框。在这种情况下,肯定只有一个会话?

除其他区别外,如果存储了会话,则您拥有这一个会话。如果使用pwd,从现在起,您拥有该用户的每个会话。

会话通常在某种程度上键入IP地址,以防止会话被盗


除此之外,会话ID不包含任何个人信息;您的密码,即使是盐渍和哈希也可以。密码可以重复使用,尽管可能是经过盐渍和哈希处理的;无法使用会话ID。会话结束后,您需要一个新的会话ID才能再次模拟用户。

通过将哈希密码+salt放入cookie,您可以:

  • 打开一个无限的蛮力向量
  • 允许任何人复制和使用cookie(它始终允许访问;而会话在一段时间内允许访问)
  • 如果相关的话,就更难更改哈希方案
此外,您通常需要存储其他内容来识别用户(比如他们的用户id,这样您就可以查找他们的密码并进行匹配)。这可能会导致其他模糊的问题


因此,您最好只使用会话id方法。

让其他人为您处理和思考所有这些问题如何?也就是说,使用OpenID、Windows Live ID、Facebook Connect等。

但如果用户想永久登录,这肯定是无关紧要的?现在有一次,将来也只有一次,不一定。这当然是实现它最简单的方法,但不是唯一的方法。例如,您可以有一个旋转会话密钥。如果有人偷了一个,他们可能也会得到下一个,但这会将原来的用户踢出,然后重新登录,你的攻击者再次被冷落。我明白你的观点。然而,会话不存在暴力问题吗?如果你有数以百万计的活跃用户(如Facebook),那么你可以尝试随机哈希,直到你得到一个有效的?我想它们和IP地址有关吧?