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

时间:2012-10-08 20:22:17

标签: iframe cookies browser 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。

是什么治理?这个行为在哪里定义?

1 个答案:

答案 0 :(得分:1)

在我看来,这是由于CORS mechanism和大多数浏览器默认允许第三方Cookie这一事实的结合。

您会找到有用的信息on the developper Mozilla Cookies webpage

  

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

     

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

要避免此默认设置,您可能会关注以下SameSite Cookie:

  

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

  

SameSite Cookie 仍在试验性且所有浏览器尚不支持

还可以查看CORS (Cross-Origin Resource Sharing) documentation,在那里您可以阅读:

  

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

     

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

     

[...]

     
      
  • 脚本(对于未取消的例外情况)。
  •   

您还可以在developper Mozilla Security Same-Origin webpage中注意<frame><iframe>是可能嵌入跨源的资源

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