2

假设 example.org 使用 cookie 对用户进行身份验证,并且它没有实现跨站点请求伪造保护。禁用第三方 cookie 的 example.org 用户是否受到 CSRF 攻击的保护(假设对 example.org 的所有敏感请求都需要存在有效的身份验证 cookie)?如果不是这样,您能否举例说明 evil.com 如何以 example.org 用户的名义执行敏感操作?

4

2 回答 2

1

禁用第三方 cookie 只会使浏览器拒绝第三方网站设置的 cookie。因此,如果您从站点A访问一个页面并且从站点B请求了一个资源,您的浏览器将拒绝任何不是来自站点A 的cookie 。

但是如果已经有第三方网站设置的cookies,即您直接访问了第三方网站,浏览器将在请求中发送它们。因此,如果您从站点A访问一个页面,并且从站点B请求了一个资源,您的浏览器将发送为站点B设置的所有 cookie 。

这意味着,禁用第三方 cookie 并不能保护您免受 CSRF 的影响。

于 2012-10-03T16:21:05.450 回答
0

首先,您必须了解第三方 cookie的工作原理——最常见的解释包括广告,所以我也会这样做。

当您访问一个网站somesite.com并且其中有一个图形广告时。

当网站向广告发出请求时(假设广告来自 ads.com),它要求ads.com加载广告并允许它存储 cookie。该 cookie 可用于建立您的个人资料,这就是第三方 cookie有时称为跟踪 cookie的原因。

通过阻止第三方 cookie,您的浏览器不允许ads.com(在我们的示例中)存储 cookie(但仍会显示广告)。

因此,假设您与 有一个打开的会话,mymail.com并且您输入有一个请求来自 的操作的图像,例如img src=mymail.com/deleteAllevil.comevil.commymail.com

浏览器向该站点发出请求,但由于您有一个打开的会话并且没有针对 csrf on 的保护mymail.com,该请求将与您已经拥有的 cookie 一起传递,mymail.com因为您与它有一个会话。

我建议阅读OWASP 的 csrf 预防备忘单以进一步阅读。

于 2012-10-03T10:57:50.787 回答