我正在开发一个铬扩展,我想绕过iFrame检测(即破坏)脚本。
我可以绕过这个检测:
if (top !== self) {
//break out
}在顶部注入此代码:
window.self = window.top;但如果我有这样的东西
if (window != top) {
//break out
}如何重新定义window?
发布于 2016-06-06 12:45:55
您不能重新定义全局对象的window 和 top 属性
window本质上是对全局窗口对象(window.window)的window属性的引用。此属性定义为不可配置和不可重写的属性。您可以通过在控制台中执行Object.getOwnPropertyDescriptor(window, "window")来验证这一点。configurable: false和writable: false属性意味着任何修改它的尝试都将失败(要么使用false返回值,要么在严格模式下出错)。window属性的此行为是窗口对象的规范所必需的。
窗口的top属性是不可配置的,也是不可重写的,因此您也不能覆盖该属性。(另一方面,parent和self可以被覆盖。)
你似乎在试图找到一种通用的欺骗框架破坏者的方法。对我来说这似乎是一项不可能的任务。在代码执行之前,您可能可以以某种方式拦截<script>元素并从代码中删除iframe检测,但是即使您成功地为某些框架破坏程序执行了iframe检测,也总会有其他扩展不会处理的问题。
https://stackoverflow.com/questions/37643343
复制相似问题