为什么浏览器允许在iframe的父(跨)域上设置cookie?

gcb*_*gcb 16 browser cookies iframe privacy user-tracking

为什么拥有iframe到另一个域(b.com)的网站(a.com)的cookie被其他域文档查看和更改?

刚刚在广告中看到了这种情况,然后去做一个概念验证,它起作用了......这就是我所做的:首先,将a.com和b.com指向我的测试机IP.

然后我有:http://a.com/a.html(这将是我看到广告的网站)

<html><body><script src="http://b.com/b.js"></script>

http://b.com/b.js(这将是在网站中内嵌插入的广告脚本,指向广告客户公司域)

document.write('<iframe src="http://b.com/b.html"></iframe>');

在http://b.com/b.html:

<html><body><script>document.cookie = "test=1;domain=.a.com;path=/;expires=Tue, 30 Oct 2012 02:47:11 UTC";</script></body></html>

在我运行之后,在firefox 14股票中,我在a.com中有一个cookie.

什么管辖?这个行为在哪里定义?

A S*_*ANI 1

在我看来,这是由于CORS 机制的结合以及大多数浏览器默认允许第三方 cookie 的事实。


您可以在开发者 Mozilla Cookies 网页上找到有用的信息:

虽然第一方 cookie 仅发送到设置它们的服务器,但网页可能包含存储在其他域的服务器上的图像或其他组件(例如广告横幅)。通过这些第三方组件发送的 Cookie 称为第三方 Cookie,主要用于广告和跟踪整个网络的广告和跟踪。

[...]大多数浏览器默认允许第三方cookie

为了避免这种默认设置,您可能会担心SameSite以下 cookie:

让服务器要求 cookie不应与跨站点请求一起发送

但

SameSite cookie仍处于试验阶段,尚未得到所有浏览器的支持。


另请查看CORS(跨源资源共享)文档,您可以在其中阅读:

CORS 机制支持安全的跨域请求以及浏览器和 Web 服务器之间的数据传输。[...]

此跨域共享标准用于启用跨站点 HTTP 请求:

[...]

  • 脚本(用于未静音的异常)。

您还可以在开发者 Mozilla Security Same-Origin 网页中注意到<frame>和<iframe>是可能嵌入跨域的资源


如果您担心并且不接受Firefox上的任何第三方 cookie ,您仍然可以安装Privacy Badger 插件(由EFF制作),但此解决方案需要在用户浏览器上进行访问。