如何使用 JavaScript 读取 HttpOnly cookie

IT技术 javascript security cookies
2021-02-11 08:54:31

有没有办法用 JavaScript 读取安全的 cookie?
我尝试使用document.cookie并且就我在这篇关于安全 cookie 和 HttpOnly 标志的文章中看到的那样,我无法通过这种方式访问​​安全 cookie。

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

3个回答

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

但更重要的 ,你为什么要读取HTTPOnlycookie?如果您是开发人员,只需禁用该标志并确保您针对 xss 测试您的代码。我建议您尽可能避免禁用此标志。HTTPOnly标志和“安全标志”(这迫使cookie被发送通过HTTPS)应始终设置。

如果您是攻击者,那么您想劫持会话但是有一种简单的方法可以劫持会话,尽管有HTTPOnly标志。您仍然可以在不知道会话 ID 的情况下参加会话。MySpace Samy 蠕虫就是这样做的。它使用XHR读取CSRF令牌,然后执行授权任务。因此,攻击者几乎可以做登录用户可以做的任何事情。

人们过于相信HTTPOnlyflag,XSS仍然可以被利用。您应该在敏感功能周围设置障碍。如更改密码提交,应要求当前密码。管理员创建新帐户的能力应该需要验证码,这是一种CSRF 预防技术,不能被XHR轻易绕过

我想获取仅 http cookie 的到期日期,我该怎么做
2021-04-01 08:54:31
你能详细说明一下蠕虫的事情吗?该链接不起作用,并且从互联网上也不太了解。谢谢你。
2021-04-02 08:54:31
@Abhishek Jebaraj 如果您不了解 sammy 蠕虫或 CSRF 令牌,请先尝试了解同源策略的限制
2021-04-08 08:54:31

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

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

在允许用户从特定浏览器使用您的站点之前,您可能想要测试它以了解用户浏览器是否正确处理 HttpOnly cookie。我正在寻找一个可以确保浏览器支持 HttpOnly 标志的示例。MS 也建议这样做,但没有关于如何做的进一步建议:Mitigating XSS with HttpOnly
2021-03-22 08:54:31
我发现他们建议浏览器版本白名单。我可能是错的,但这不是检查 javascript 支持的便捷方法吗?你能建议这方面的任何缺点吗?
2021-04-03 08:54:31

你不能。脚本无法访问 Httponly cookie 的用途。

与上一个答案的第一句话相同: The whole point of HttpOnly cookies is that they can't be accessed by JavaScript.
2021-03-17 08:54:31
您的答案与现有答案有什么新的或不同的???
2021-03-21 08:54:31
@Akin Zeman:无需使用尖叫帽。您可能想深入了解非暴力沟通。
2021-03-24 08:54:31