阅读这篇关于 HttpOnly cookies 的博文让我开始思考,是否有可能通过任何形式的 XSS 获取 HttpOnly cookie? Jeff 提到它“大大提高了标准”,但听起来它并不能完全防御 XSS。
除了并非所有浏览器都正确支持此功能这一事实之外,如果用户的 cookie 是 HttpOnly,黑客如何才能获取它们?
我想不出任何方法可以让 HttpOnly cookie 将自身发送到另一个站点或由脚本读取,所以看起来这是一个安全的安全功能,但我总是惊讶于有些人可以如此轻松地解决这个问题许多安全层。
在我工作的环境中,我们只使用 IE,因此其他浏览器不是问题。我正在专门寻找其他方法,使这可能成为一个不依赖于浏览器特定缺陷的问题。
注意这个答案已经过时了,XST 不太可能在几乎任何现代场景中被利用。答案的其他部分可能相关,但还有其他更现代的技术。
首先,正如其他一些人提到的,XSS 可以允许其他有效负载,而不仅仅是 cookie 窃取。
但是,是否有可以通过 XSS 窃取 httpOnly cookie? (忽略httpOnly支持的问题?)....
答案是:是的。
XSS 的一个子集称为“跨站跟踪 (XST)”(或转到原始“研究论文”)。此攻击让 XSS 有效负载向 Web 服务器(或代理,正向或反向)发送 HTTP TRACE 请求,该请求将向客户端回显完整请求 - 包括您的 COOKIES,无论是否为 http。然后,XSS 有效负载可以解析返回的信息,并检索那些美味的 cookie...
顺便说一句,XSS 的另一个“子集”(有点)涉及将有效负载注入响应标头。虽然类似,但这并不是完全
- 功能更强大,允许几乎完全控制其他客户端、缓存中毒,当然还可以访问 cookie,如果愿意的话。 使用 HttpOnly cookie
将防止除非:
您的浏览器不支持 HttpOnly浏览器中存在一个迄今为止未知的漏洞,该漏洞会破坏 HttpOnly
如果浏览器不理解HttpOnly,则攻击成功。
除了嗅探网络之外,另一种窃取方式是直接控制用户的计算机。然后可以从文件中读取cookie。如果它是一个会话cookie,它当然会在浏览器关闭后被删除。 顺便说一句,窃取会话 cookie 并不是 XSS 攻击唯一可能的“有效负载”。例如,它可能会使您的 CSRF 保护变得毫无用处。它可能会改变您网站的内容来欺骗用户。还有许多其他恶意的东西。
因此,更好地以良好的方式保护自己
(转义输出),并将 HttpOnly 视为
额外的保护层。 在这种情况下窃取 HttpOnly cookie 的唯一方法是客户端在某个时刻在响应中反映 cookie。您可以发出 XHR 请求来窃取 cookie。 虽然它与 HttpOnly 标志无关, 另一种方法是,如果应用程序使用 JWT 进行身份验证/授权,您可以从本地存储中读取它。
数据包嗅探可以读取通过http传输的cookie。但它可能不属于 XSS。
JavaScript 可以修改页面上的 HTML,因此,httpOnly
does意味着您可以安全地抵御 XSS。