如果域A的iframe为域B,则域A可以访问域B的cookie



我记得读过关于域A能够控制域B的文章,如果域B内部有一个帮助框架。我有StumbleUpon这样的页面,我在那里把其他网站放在iframe中。如果其中一个网站将我的页面放在iframe中呢?此外,像Facebook的"点赞"按钮和Twitter的"推特"按钮都是iframe。他们可以访问什么数据?他们能把脚本注入我的页面吗?

您的网站无法访问iframe中的另一个域,该域也无法访问您的网站。但是,如果iframe与父级在同一个域中,则可以通过javascript访问它。

点击此处阅读更多信息:http://pipwerks.com/2008/11/30/iframes-and-cross-domain-security-part-2/

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

第二版:关于你对Facebook点赞按钮等的问题,这取决于你如何将点赞按钮添加到你的页面中。如果你通过内联javascript添加它,javascript将可以访问你网站上的所有内容。但是,如果它只是一个插入到文档中的iframe,它将无法访问页面上的任何内容

否,同源策略禁止访问:除非两个文档具有相同的源(基本上相同的协议、主机和URL中的端口号),否则在源中运行的脚本无法访问另一个文档的DOM,除非它在同一源中。

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

,他们不能访问其他域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>

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

相关内容

  • 没有找到相关文章

最新更新