security - 如何知道通过 iframe 加载的页面是否在沙箱内?

标签 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

最佳答案

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

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

之后,就简单如下。

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

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

关于security - 如何知道通过 iframe 加载的页面是否在沙箱内?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34043278/

相关文章:

iOS 内购沙箱测试账号不断弹出验证

单个域的 Javascript 文件

android - 是否可以使用相同的 key 在不同的 Google Play 帐户中签署不同的应用程序?

javascript - 在 Chrome 扩展中绕过 X-Frame-Options DENY?

iphone - 如何在应用内购买中运行开发签名构建?

sandbox - GKPlayer加载照片尺寸: withCompletionHandler: Sandbox Connection Error

ios - 基于另一个 String iOS 生成一个唯一的数字字符串

java - 带有 permitAll() 和过期 Auth Token 的 URL 的 Spring Security

javascript - 我可以调整iframe变为可滚动位置的高度吗?

javascript - 获取元素相对于最顶层窗口的位置的函数