如果域A具有域B的iframe,其具有域A的iframe,域A是否可以访问域B的cookie?

时间:2012-02-12 15:49:55

标签: html security iframe cross-domain

我记得读过域A能够控制域B,如果域B里面有一个帮助帧。我有像StumbleUpon这样的网页,我将其他网站放在iframe中。如果其中一个网站将我的网页放在iframe中怎么办?此外,Facebook的Like按钮和Twitter的推文按钮等内容都是iframe。哪些数据/ w /无法访问? 他们能够将脚本注入我的页面吗?

4 个答案:

答案 0 :(得分:1)

您的网站无法访问iframe中的其他域名,而其他域名无法访问您的网站。但是,如果iframe与父级在同一个域下,则可以通过javascript访问。

在此处阅读更多内容:http://pipwerks.com/2008/11/30/iframes-and-cross-domain-security-part-2/

编辑:这里有一些更好的阅读http://javascript.info/tutorial/same-origin-security-policy

Edit2:关于你关于Facebook Like按钮等的问题。这取决于你如何向页面添加类似按钮。如果您通过内联JavaScript添加它,javascript将有权访问您网站上的所有内容。但是,如果只是将iframe插入到文档中,那么它就无法访问您网页上的任何内容

答案 1 :(得分:1)

不,Same-Origin Policy禁止访问:除非两个文档具有相同的来源(URL中的协议,主机和端口号基本相同),否则在源中运行的脚本无法访问其他文档的DOM,除非它在相同的起源。

但是那些“社交插件”通常是通过从服务器加载外部脚本来嵌入的。在这种情况下,将加载外部脚本,然后在页面原点中执行。因此,同源政策不适用。在这种情况下,这些脚本将能够访问JavaScript可访问的任何cookie(即没有 HttpOnly 标志)。

答案 2 :(得分:0)

这不会解决您的问题。仅仅因为他们嵌入了您网站的iframe并不意味着您的网站可以更好地访问其他网站中的Cookie,脚本等。

答案 3 :(得分:0)

,他们无法访问其他域Cookie。

无论您在何处隐藏具有不同域名的iframe,浏览器都会始终发送为该特定域名设置的Cookie。

可以使用Referer标题创建类似按钮。

说,http://domainA.com/index.html包含

 <iframe src="http://domainB.com/like.html"></iframe>

在iframe内部调用http://domainB.com/like.html时,HTTP标头Referer: http://domainA.com/index.html与请求一起发送。这种方式domainB.com/like.html始终知道谁在请求。当domainB.com得到这个小部分以获取信息时,它可以检查页面的喜欢数量并显示结果。

一个实例

将波纹管代码放入您的任何网站。之后,每次刷新网站时,它都会显示其加载的次数。它会计算点击次数。

 <p>This page is viewd 
 <iframe 
      src="http://tools.cmyweb.net/hitcounter.php" 
      frameborder="0" 
      scrolling="no" 
      width="40px" 
      height="16px" 
 />1</iframe> times</p>