如何知道通过iframe加载的页面是否在沙盒中?

时间:2015-12-02 12:52:59

标签: security iframe sandbox

我试图检测是否通过沙盒iframe加载了一个页面。这可能吗?

例如,我们提供自定义可嵌入小部件,有些人认为通过在iframe中对它们进行沙盒化可以实现智能化,但这会破坏某些内容......例如window.top.location

显然,他们可以启用我们需要的功能,但理想情况下,我应该能够执行以下操作:

"sandbox" in window.top

我也尝试过做

try {
    // do something that would not work if within sandbox
} catch(e) {

}

但这不起作用,因为它是浏览器安全错误,与javascript无关。

JSFiddle实际上沙箱他们的iframe以防止window.top.location导航,所以这将是一个很好的例子来向您展示。 如果你在这里看一下这个例子:

http://jsfiddle.net/mwsb8geL/show/

按下即时预订在线按钮时,您可以看到错误。

enter image description here

1 个答案:

答案 0 :(得分:1)

项目sandblaster可以帮助您检测是否正在运行沙盒。

在iframe中测试它是否为沙箱,打开脚本标记并粘贴https://raw.githubusercontent.com/JamesMGreene/sandblaster/master/dist/sandblaster.js的内容。这是由于安全问题。

在此之后,它就像下面一样简单。

var result = sandblaster.detect();
if(result.sandboxed === true) {
    //sandboxed
}

这是我为另一个答案提出的demo,但表明解决方案有效。