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



为什么一个拥有另一个域(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>

在我运行完firefox14股票后,我在a.com.中有一块饼干

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

在我看来,这是由于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制作),但此解决方案需要在用户浏览器上访问。

相关内容

  • 没有找到相关文章

最新更新