16

为什么具有指向另一个域 (b.com) 的 iframe 的站点 (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。

什么支配它?这种行为在哪里定义?

4

1 回答 1

1

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


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

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

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

为避免此默认设置,您可能会担心以下SameSitecookie:

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

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


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

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

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

[...]

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

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


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

于 2018-03-30T07:30:19.823 回答