如何使用 JavaScript 读取 HttpOnly cookie

问题描述 投票:0回答:3

编辑

secure cookie”的含义含糊不清。澄清一下:

  1. 像通过 https:// 协议发送一样安全——即。 cookie not 以明文形式发送。被誉为“安全旗帜”

  2. 安全,因为在 cookie 中运行的 Javascript 无法读取 浏览器——即。

    document.cookie
    将不起作用。被称为“HttpOnly”标志。

这个编辑是为了澄清原来的问题是关于第二个案例的。


原始问题

有没有办法用 JavaScript 读取安全 cookie?
我尝试使用

document.cookie
来做到这一点,据我在这篇关于安全 cookie 和 HttpOnly 标志的文章 上看到的那样,我无法通过这种方式访问安全 cookie。

任何人都可以提出解决方法吗?

javascript security cookies
3个回答
185
投票

不同的浏览器在设置 HTTPOnly 标志时启用不同的安全措施。例如 Opera 和 Safari 不会阻止 javascript 写入 cookie。但是,在所有主流浏览器的最新版本上始终禁止阅读。

但更重要的是为什么你想读一个

HTTPOnly
cookie?如果您是开发人员,请禁用该标志 - 如果该值不是身份验证令牌等敏感值,则不需要启用此安全标志。
HTTPOnly
安全预防措施是为了帮助抵御 XSS,但是您仍然需要测试您的代码是否存在 XSS,因为它仍然可以被利用。我建议避免禁用安全功能,但有时
HTTPOnly
标志会妨碍应用程序行为。

如果您是 attacker,那么您想 劫持会话。但是有一种简单的方法可以劫持会话,即使启用了

HTTPOnly
标志。您仍然可以在不知道会话 ID 的情况下继续访问会话,这就是 MySpace Samy 蠕虫传播 的方式。该蠕虫使用 XHR 读取 CSRF 令牌,然后执行授权任务。因此,攻击者几乎可以做登录用户可以做的任何事情——无需访问存储为 cookie 值的会话 ID。

人们对

HTTPOnly
旗帜过于信任,XSS仍然可以被利用。您应该围绕敏感功能设置障碍。如更改密码归档应始终要求当前密码。要求对敏感的管理功能执行 2fa 步骤可能会使攻击者更难使用窃取的凭据或通过 CSRF 也称为“会话骑马”攻击进行访问。

虽然添加 CAPTCHA 会使 CSRF 变得更加困难,但如果攻击者拥有 XSS,他们将能够通过使用 BeEF 代理 查看然后绕过 CAPTCHA 来绕过 CAPTCHA 质询响应。任何同源策略绕过都可以用来查看 CAPTCHA 的质询响应(或 CSRF 令牌),一个很好的例子是 Universal-Cross-Site-Scripting 或 UXSS。要求 2fa 提高了标准,因为它仍然需要额外的人机交互,这为发现和阻止会话攻击提供了另一个机会。


73
投票

HttpOnly cookie 的全部意义在于它们不能被 JavaScript 访问。

您的脚本读取它们的唯一方法(除了利用浏览器错误)是在服务器上有一个协作脚本,该脚本将读取 cookie 值并将其作为响应内容的一部分回显。但是,如果您可以并且愿意这样做,为什么首先要使用 HttpOnly cookie?


6
投票

你不能。 Httponly cookie 的目的是脚本无法访问。

© www.soinside.com 2019 - 2024. All rights reserved.