【问题标题】:How to know if a page loaded via iframe is within sandbox? [duplicate]如何知道通过 iframe 加载的页面是否在沙箱中? [复制]
【发布时间】:2015-12-02 12:52:58
【问题描述】:

我正在尝试检测页面是否通过沙盒 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/

当您按下 Instant Book Online 按钮时,您会看到错误。

【问题讨论】:

  • 是的,它们是完全相同的问题。我们都想知道当前页面是否在沙盒环境中执行。这两个问题都还没有答案。我一直在寻找解决方案,有机会我会阅读规范。

标签: security iframe sandbox


【解决方案1】:

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 2013-01-12
    • 1970-01-01
    • 2012-08-28
    • 2017-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-28
    相关资源
    最近更新 更多