如何打破被沙箱限制的iFrame?

9

1. 这是什么问题?

现代浏览器(使用当前版本的 Chrome 和 Safari 测试),在 HTML5 规范中为 iFrame 元素添加的 sandbox 属性,如果未设置 allow-top-navigation 标志,即使标志 allow-formsallow-scripts 存在,也会将任何突破/破坏/禁止框架的方法变成无效。

2. 我尝试过什么?

  • 各种 JavaScript 方法,如 if(top != self) top.location.replace(location);

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

  • 触发带有 target="_top" 属性的锚点元素的单击事件。实际上,带有 target="_top" 属性的锚点元素变得无用。因此,向用户发出通知并建议他们采取行动也不起作用(如在此 Flickr iFrame 示例中所示)。

3. 我想要实现什么?

我想要一种在使用了标志 allow-formsallow-scripts 的 iFrames 中跳出框架的方法。

看来他们只是将这个属性的遗漏之处提供给所有黑客的拼图游戏的缺失部分。

4. 我不需要的解决方案?

我正在寻找一种可以打破框架的解决方案,而不是一种不显示网站内部页面的解决方案(例如使用X-Frame-Options 响应头)或使用 CSS 隐藏页面主体等。


似乎他们刚刚向所有黑帽子提供了这个属性的缺失拼图块。请勿涉及政治问题。 - surfasb
1个回答

7

恐怕您找不到解决方案,因为沙箱的目的就是防止您越界。

如果有一种方法可以越过沙箱,供应商会将其归类为安全问题并迅速修复。


这并不完全正确。沙盒是为了被打破而设计的(看看iOS越狱和Android已获取root权限的设备)。也许目前没有已知的方法可以打破最新版的Chrome和Safari,但我相信旧版本存在已知问题。 - Victor Ronin
1
当然可以。但问题是关于现代浏览器版本——所有这些版本都有自动更新程序,因此任何发现的黑客攻击渗透率都会快乐地降至极低水平。 - Jonathan Hedley
1
@JonathanHedley,实际上,我不是在寻找黑客技巧。我正在寻找一种合法的方法来打破框架限制。我不确定为什么规范的起草者会这样做,但似乎他们给了那些想要利用我们的小白和大公司一个很好的机会。 - Shef
2
我明白您不想使用黑客手段。这个规范的目的是为了让父页面可以安全地包含来自外部来源的内容,例如嵌入来自视频提供商、广告服务器、社交网络等的内容。如果您不想启用嵌入式内容,我建议使用JS检查是否存在并清除您的内容。 - Jonathan Hedley
@JonathanHedley 嗯...我希望他们能给我们比破碎的 X-Frame-Options 更多的选项,它不允许完整的例外列表,也会破坏我们自己的网站。现在的情况太糟糕了,唉...不过,我现在要选择破坏自己的网站。我希望那些骗子不会禁用我的框架网站的 JS。:/这不是我想要的,但我会把赏金颁发给你,因为否则它将被浪费。感谢你的时间。 - Shef
@JonathanHedley 所有安全措施的目的都是为了让它发挥作用,但我们总是听说攻击那些人们告诉我们是安全的东西。此外,您认为会有一个补丁来防御攻击的事实表明,任何发现的漏洞都将是实现上的问题,但是存在设计缺陷,这些缺陷无法修补或难以修补,同样有助于打败安全系统。 - DataDino

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接