绕过iFrame破坏者脚本

时间:2016-06-05 15:00:59

标签: javascript google-chrome-extension

我正在开发Chrome扩展程序,我想绕过iFrame检测(即buster)脚本。

我能够绕过这种检测:

if (top !== self) {
   //break out
}

将此代码注入顶部:

window.self = window.top;

但如果我有这样的事情怎么办?

if (window != top) {
   //break out
}

如何重新定义window

1 个答案:

答案 0 :(得分:2)

您无法重新定义全局对象的windowtop属性

window本质上是对全局窗口对象window属性的引用(window.window)。此属性定义为不可配置且不可重写。您可以通过在控制台中执行Object.getOwnPropertyDescriptor(window, "window")来验证这一点。 configurable: falsewritable: false属性意味着任何修改它的尝试都将失败(使用false返回值或严格模式下的错误)。 specification of the Window object需要window属性的此行为。

窗口的top属性不可配置且不可重写,因此您无法覆盖该窗口。 (另一方面,parentself可以被覆盖。)

你似乎试图找到一种普遍可用的愚弄大片的方法。这对我来说似乎是一项不可能的任务。您可以以某种方式拦截<script>元素并在代码执行之前从代码中删除iframe检测,但即使您成功执行了某些示例,也总会有其他的扩展程序无法执行照顾。