我已经阅读了一些有关SO的文章和问题(例如here),表示您不应将用户的密码存储在Cookie中。如果密码被盐渍和散列,为什么这种不安全?
特别是,为什么它不如使用会话安全,通常建议的替代方案?如果用户希望保持登录状态那么这个新的cookie(带有会话ID /哈希)肯定与使用用户密码的cookie一样安全吗?如果cookie在某种程度上被“窃取”,攻击者可以以相同的方式以用户身份登录。
编辑:问题的主要症结是关于用户保持登录的部分,即通过“记住我?”复选框。在这种情况下,肯定只有一次会议?
答案 0 :(得分:13)
通过在cookie中放入哈希密码+ salt,您:
此外,您通常需要存储其他内容,以识别用户(例如他们的用户ID,以便您可以查找其密码并进行匹配)。这可能导致其他模糊的问题。
所以你最好采用会话ID方法。
答案 1 :(得分:4)
在其他区别中,如果存储会话,则您拥有此会话。如果采用了密码,那么从现在开始,您拥有该用户的每个会话。
答案 2 :(得分:3)
会话通常在某种程度上与IP地址相关联,这有点可以防止会话被盗。
除此之外,会话ID不包含任何个人信息;你的密码,甚至盐渍和哈希。密码,盐渍和散列,可以重复使用;会话ID不能。会话结束后,您需要一个新的会话ID才能再次模拟用户。
答案 3 :(得分:1)
如何让别人与您打交道并为您考虑所有这些问题?也就是说,使用OpenID,Windows Live ID,Facebook Connect等