iframe如何访问单独域上的cookie

时间:2018-06-12 19:15:01

标签: javascript cookies iframe cross-domain

我无法理解iframe如何访问跨域Cookie。 例如。我有2个域abc.com和xyz.com,我有abc的父帧,从xyz调用iframe,xyz的iframe有一个代码来读取cookie(不是仅限http)并通过postMessage响应发送它

我不清楚iframe是否加载到父框架中是不是如果代码调用iframe中的document.cookie(因为它当前在我的机器上加载)会在我的机器上发出cookie而不是存储在xyz.com上的那个

我正在查看openid连接文档,他们会这样做。

此处描述了实现:Accessing cookies of an iFrame in parent window

1 个答案:

答案 0 :(得分:0)

来自不同域的iframe可以从第一个域读取cookie的唯一方法。也就是说,如果拥有cookie的域调用以某种方式将这些cookie输出到另一个域的代码。

如果cookie-owning-domain在cookie-stealing-domain上调用一个函数,则可以这样做。

例如,如果cookie-stealing-domain定义了名为“reportCookies()”的函数,则cookie-owning-domain可以调用iframe.window.reportCookies(document.cookie)来发送cookie。这是XSS(跨站点脚本)攻击的基本方法。它通常涉及以某种方式获取代码直接在拥有cookie的域上运行。

我们实际上在我们的网站上使用了这种技术,它有两个不同的(子)域。我们加载了看起来像这样的嵌套iframe:

cookie-owning
  cookie-stealing
    cookie-owning

然后我们让最里面的域名从cookie中窃取一个函数来共享一些cookie(出于合法目的)。