退出网站是否确保没有人可以破解 cookie?

信息安全 应用安全 Web应用程序 验证 饼干
2021-08-25 01:44:55

如果我点击某个网站的登出链接,这是否意味着有人无法劫持我的 cookie 并使用它登录?

当我登录时,有权访问我计算机硬盘的人是否可以简单地获取 cookie 然后登录?

在上述任何情况下,Gmail 的 2 因素身份验证之类的功能是否有帮助?

3个回答

这里的答案取决于网站如何处理 cookie 管理。如果他们做的事情正确,点击登出链接应该使服务器端的 cookie 无效,并将其从客户端中删除。

因此,如果攻击者在此之后访问了您的 PC,他们不应该能够滥用 cookie,即使他们可以访问它。

如果您仍然登录并离开您的 PC,而没有关闭浏览器,那么攻击者很可能仅通过使用浏览器就可以获取 cookie。如果他们只能访问您的硬盘驱动器(例如,通过网络),他们可能能够访问 cookie 文件,但利用它可能会更加棘手。

在您登录时有人窃取 cookie 的情况下,双因素身份验证可能会有所帮助,但是当会话正在进行时,机器上可能会有 cookie 提供访问权限。

最安全的选择是确保您在离开计算机之前退出所有会话并关闭浏览器(关闭浏览器时会从客户端删除大量会话 cookie)

一般来说,这实际上取决于服务器如何实现基于 cookie 的身份验证。

  • 如果服务器使用 cookie 作为服务器数据库的索引键,服务器使用它来恢复所有会话信息,那么“退出”意味着让服务器忘记会话的所有内容——此时 cookie 变得毫无价值攻击者,因为它不再引用现有会话。在这种情况下,退出可以保护您免受 cookie 劫持。

  • 如果服务器将会话信息存储在cookie 本身中(最好使用MAC加密,这样用户就不能自己“发明”或调整会话),那么“退出”意味着让浏览器忘记 cookie。它不会改变服务器端的任何东西;如果攻击者在擦除之前获得了 cookie 的副本(或者如果擦除不是很有效,例如攻击者复制了硬盘并恢复了擦除的文件),那么他可以使用它重新进入会话。

至于从硬盘中抓取cookie,通常很简单。例如,在我的机器上,我的 Web 浏览器 (chromium) 似乎在本地将 cookie 存储为SQLite数据库,即没有任何保护的单个文件。

身份验证是在创建会话时完成的;所以它与手头的讨论几乎无关。虽然服务器可以添加一些额外的保护措施,例如如果 cookie 不是来自与以前相同的 IP 地址,则拒绝它(这将部分阻止一些攻击者,但对于拥有动态 IP 的诚实用户也可能不方便)。

在 Web 应用程序中,注销会导致 cookie 过期日期设置为过去,这会触发浏览器将其删除。所以基本上注销会删除cookie。

这完全取决于网站如何使用 cookie。一个好的系统将简单地存储一个身份验证令牌,然后针对系统进行检查以确保其有效。身份验证令牌可能会将用户浏览器和 IP 地址等方面纳入帐户,因此即使攻击者获得了 cookie,他们也必须欺骗这些内容才能成功对其进行身份验证。一个糟糕的系统可能只是将用户密码以纯文本或哈希的形式存储在 cookie 中,这两种方式都非常糟糕,这意味着攻击者可以利用这些详细信息。