禁用第三方cookie是否可以保护客户端免受跨站点请求伪造攻击?

时间:2012-10-03 07:32:16

标签: browser security csrf

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

2 个答案:

答案 0 :(得分:1)

禁用第三方Cookie只会使浏览器拒绝由第三方网站设置Cookie。因此,如果您从网站 A 访问某个网页并且网站 B 请求了资源,那么您的浏览器将拒绝任何非网站 A <的Cookie / em>的

但是,如果第三方网站集已经存在Cookie,即您已直接访问过第三方网站,则浏览器会在请求中发送它们。因此,如果您从网站 A 访问某个网页并且网站 B 请求了资源,那么您的浏览器将发送为网站 B设置的任何Cookie 沿着。

这意味着,禁用第三方Cookie不会保护您免受CSRF的侵害。

答案 1 :(得分:0)

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

当您访问网站somesite.com并且其中包含图形广告时。

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

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

因此,我们假设您与mymail.com进行了一次开放式会话,并输入evil.comevil.com有一个图像,要求mymail.com进行操作,例如< em> img src = mymail.com / deleteAll

浏览器向此网站发出请求,但由于您在mymail.com上有一个打开的会话并且没有针对csrf的保护,因此您将使用mymail.com已有的Cookie传递该请求,因为您有会议。

我建议您阅读OWASP's csrf prevention cheat sheet进一步阅读。