iframe从其父窗口读取的数据量是多少?

时间:2012-06-15 14:25:11

标签: iframe same-origin-policy

如果我创建一个窗口小部件并将其嵌入到来自不同域的网站上的<iframe>中,那么窗口小部件可以读取多少关于父页面的数据?

显然没有DOM访问权限,但是是否可以访问其他信息,例如父页面是否有父页面,或父页面的URL是什么?

2 个答案:

答案 0 :(得分:2)

通常,来自其他域的iframe内容无法以任何方式访问父级。这就像在不同的浏览器选项卡中加载页面一样。

但是,即使从不同的域提供服务,也可能存在允许访问父DOM的中间人攻击。这比听起来容易 - 任何对公共WiFi接入点拥有管理控制权的人都可以进行这种攻击(想想星巴克,酒店,机场)。

可以使用HTML5 iframe沙箱属性防止此攻击 - 请参阅下文。

中间人攻击的工作原理如下。假设您的网页加载http://yoursite.com,iframe转到http://badsite.org

HTML5 iframe沙箱属性似乎是避免这种情况的方法。您可以阅读spec,但最佳说明可能是here

这似乎得到了ChromeIE10FireFoxSafari的支持。

规范说如果“allow-same-origin”属性设置,“内容将被视为来自唯一来源。”这样可以防止您的子iframe访问父DOM的任何部分,无论浏览器认为该URL是什么。

Sandbox还允许您禁用脚本,弹出窗口,更改顶级URL以及其他内容。

答案 1 :(得分:-2)

我进行了一些谷歌搜索,但事实证明,如果内容是另一个域(相同的原始政策),通常无法访问Iframe的内部内容,但是有一个{{ 3}}它可以为你提供一些解决方法。