大多数关于 BREACH 漏洞的讨论都围绕着窃取基于会话的 CSRF 令牌。但是,如果您可以窃取基于会话的令牌,您是否也可以窃取会话令牌本身?显然,我不明白 BREACH 攻击的一些更好的点:)
我对 Django 特别感兴趣。在浏览器发送 cookie 的所有请求中,浏览csrftoken器也会发送sessionidcookie。
编辑:
如果我新发现的理解是正确的,那么答案肯定是否定的。BREACH论文说:
要容易受到此侧通道的攻击,Web 应用程序必须:(1) 从使用 HTTP 级压缩的服务器提供服务,并且 (2) 在 HTTP 响应正文中反映用户输入,并且 (3) 反映秘密 (例如 CSRF 令牌)在 HTTP 响应正文中。
(2) 和 (3) 指的是同一件事吗?也就是说,只有在 HTTP 响应正文中重复的用户输入与您试图窃取的秘密相同的情况下,攻击才可能发生?
如果这是正确的,那么它是有道理的。
您可以窃取 CSRF 令牌,因为它是由用户输入的(通常通过表单 POST 参数或 cookie),并且它可能在响应中再次重复(作为表单的隐藏输入或作为 cookie),并且这是你试图窃取的秘密。
您无法窃取会话令牌,因为用户无法根据该输入更改输出。我的意思是,当然,用户可以提交更改的会话 cookie,但服务器(希望)不会在响应中重复该无效会话令牌。