关于在cookie中保存哈希密码的安全风险有很多讨论,因为在访问用户的计算机时,黑客可以使用保存的密码登录。如果黑客可以访问用户的计算机,他可以捕获密码,因为浏览器也在本地保存密码(当然是加密的)。 Cookie中设置的密码与浏览器保存的密码有什么区别?
由于显而易见的原因,应该发送临时GUID而不是密码。在任何情况下,我认为限制对已记录IP的访问可以关闭攻击者使用本地保存的GUID的大门。当然,它会限制记录期的长度,因为IP通常是动态的并且经常变化;但我认为值得注意的是它的安全性。有什么想法吗?
答案 0 :(得分:3)
我想你想要在cookie中存储散列密码的原因是为了创建一个“记住我”的cookie。因此,您需要一个秘密的cookie值,这样其他人就不会轻易猜到它。有权访问此值的任何人都可以以此用户身份登录,因此它实际上是“额外密码”。
这里涉及两个风险:
最重要的是暴露密码的风险。这不仅会使您的网站面临风险,还可能使其他网站面临风险。大多数用户重复使用他们的密码,密码可能会让入侵者访问用户电子邮件帐户和网上银行。有权访问散列值的人可以使用强力表或彩虹表来发现原始密码(彩虹表是预先计算的散列的长列表)。彩虹表可轻松用于超过8个字符甚至更长的密码。您可以通过在创建哈希值之前对密码进行盐析以使其超过20个字符来避免这种情况(记住也将盐存储在cookie中)。使用安全散列算法计算的正确盐渍密码哈希应该是非常安全的。
另一个风险与用户必须更改其原始密码以使散列密码字符串无效的事实有关。一旦打开,用户就无法实际关闭此功能。您可以在取消选中“记住我”按钮时删除cookie,但如果cookie已经被泄露则无效。如果他的电脑被盗了怎么办?如果用户在一台计算机上检查了此按钮,则他必须有权访问该计算机才能禁用此功能。
答案 1 :(得分:2)
是的,在cookie中使用散列密码不太安全。 在将其保存在浏览器中并通过网络发送之间存在差异:除非您始终使用SSL,否则攻击者无需访问计算机即可从请求中读取cookie
发送随机值更安全,因为这与用户的实际密码无关:可以通过忘记随机值来使会话失效,而无需让用户更改密码。此外,如果攻击者确实从cookie中获取了散列值,则可能会恢复实际密码(如果这是发送的密码)。
答案 2 :(得分:1)
在访问用户的计算机时,黑客可以使用 保存密码。如果黑客可以访问用户的计算机,他可以 捕获密码,因为浏览器也在本地保存密码(加密 当然)。
不确定你的意思。如果您要求IE记住您的网站密码并且有人拥有您的计算机的密码并且可以使用您的IE,那么是的,他可以使用您的密码登录。但这与散列或cookie等无关。
首先,无法检索哈希密码。因此,如果有人拥有您的密码哈希,他就不知道您的密码。
当您登录请求密码的网站时,您提供了加密发送的密码。标准做法是将用户的密码存储为哈希,即不是密码本身。因此,您键入密码,接收服务器将哈希与存储的哈希进行比较。
现在与您在cookie中发送散列密码的问题有关,这与会话管理有关。即确定用户是否已经成功登录 恕我直言使用哈希密码作为确定用户在使用普通HTTP时是否已登录的方法不是一个好主意。
但如果你问这个问题,这是另一个话题 即如何最好地通过HTTP连接进行会话管理
答案 3 :(得分:1)
您应该要求用户重新输入密码的时间:
保存散列密码会降低效率。
顺便说一下,你应该已经使用安全的cookie(不会通过HTTP传输),HttpOnly(不能通过javascript访问)来防止XSS攻击。当然,如果有人完全攻击该人的机器,他们只需安装一个键盘记录器。