如何突破沙盒 iFrame?

Posted

技术标签:

【中文标题】如何突破沙盒 iFrame?【英文标题】:How to break out of a sandboxed iFrame? 【发布时间】:2012-11-27 01:16:00 【问题描述】:

1。有什么问题?

如果 allow-top-navigation 未设置标志,则为 html5 规范中的 iFrame 元素添加的 sandbox 属性会在 modern browsers(使用当前版本的 Chrome 和 Safari 测试)中呈现任何帧中断/破坏/杀死方法 null ,即使存在 allow-formsallow-scripts 标志。

2。我尝试了什么?

任何 javascript 方法,例如 if(top != self) top.location.replace(location);

在表单上触发提交事件 带有target="_top" 属性

触发点击事件 具有target="_top" 属性的锚元素。事实上,具有target="_top" 属性的锚元素被渲染为无用。因此,建议用户采取行动的好消息也不起作用(如Flickr iFrame example 所示)。

3。我想达到什么目标?

我想要一种方法来打破现代浏览器上的框架,这些浏览器已经为 iFrame 实现了 sandbox 属性,并带有 allow-formsallow-scripts 标志?

似乎他们刚刚给所有具有此属性的黑帽提供了拼图的缺失部分。

4。我不是在寻找什么?

我正在寻找一种解决方案,它会打破框架。不适用于不会在框架内显示网站(例如X-Frame-Options response header)或使用 CSS 隐藏正文等的解决方案。

【问题讨论】:

似乎他们刚刚给所有具有此属性的黑帽人提供了拼图的缺失部分。请不要谈论政治。 【参考方案1】:

恐怕你找不到解决方案,因为沙盒的关键是你无法摆脱它。

如果有黑客入侵,供应商会将其归类为安全问题并迅速修补。

【讨论】:

这并不完全正确。沙盒是用来破解的(看看 ios 越狱和 android 根设备)。可能没有已知的方法可以破坏最新的 Chrome 和 Safari,但我很确定旧版本存在已知问题。 当然。但问题是关于现代浏览器版本——所有这些版本都有自动更新程序,所以任何黑客发现的渗透率都会很高兴地下降。 @JonathanHedley 实际上,我不是在寻找黑客。我正在寻找一种合法的方式来打破框架。我不知道为什么规范的起草者会这样做,但似乎他们正在为 leechers(新手黑客和大型军团等)提供一种按照他们的意愿构建我们的好方法。 我知道你不是在黑客攻击之后。规范是这样的,以允许父页面安全地包含来自外部资源的内容。例如。嵌入来自视频提供商、广告服务器、社交网络等的内容。我建议如果您不想让您的内容被嵌入,请使用 JS 来检查您是否是并清除您的内容。 @JonathanHedley 嗯...我希望他们能给我们提供比破碎的X-Frame-Options 更多的选择,它不允许完整的例外列表,以及我们自己的网站的污损。现在的样子,太破了,叹息……但是,我现在要进行破坏了。我希望那些骗子不会为我的框架站点禁用 JS。 :/ 这不是我想要的,但我要把赏金奖励给你,否则它会被浪费掉。感谢您的宝贵时间。

以上是关于如何突破沙盒 iFrame?的主要内容,如果未能解决你的问题,请参考以下文章

沙盒、IFrame 和允许同源

具有内容安全策略的 iFrame 沙盒

IFRAME 沙盒属性正在阻止 AJAX 调用

带有“允许同源”标志错误的 iframe 沙盒

javascript - postMessage 到沙盒 iframe,为啥收件人窗口原点为空?

JavaScript Ajaxian»使用iframe沙盒化JavaScript