所以我们在iframe中加载一个页面。此子页面是从与父级相同的域上的缓存中加载的。然而,外部资源不是本地缓存的,而是从外部站点加载的--包括javascript。在一个网站上,我们使用了框架破解代码:
if (top.location != self.location) {
top.location = self.location
}现在我知道我们可以使用coderr的解决方案,但我不确定其中的含义/敲击问题是什么。考虑到我们可以访问缓存的子页面,我想知道我们是否可以向子页面添加任何东西,以便覆盖任何方法或值,从而使框架分解呈现为null。例如,在孩子的<head>中,我尝试添加以下内容:
<script type="text/javascript">
top.location = self.location
</script>和
self.location = top.location结果相当可怕(第一个例子中的无限嵌套,第二个例子中的浏览器完全崩溃)。
对于我们可以添加到孩子中的代码,有什么建议来消除框架破坏吗?
否则,我们将不得不缓存js并解析出/替换framebusting脚本。
谢谢
R.
请--这是合法的!!
发布于 2010-12-18 00:16:18
不久前,我看到了Jeff Atwood的一篇非常有趣的文章,他谈到了一种“不可能”的反框架破坏技术:
http://www.codinghorror.com/blog/2009/06/we-done-been-framed.html
它甚至不需要特权访问子框架的代码!
发布于 2016-11-06 03:10:23
用Tampermonkey进行简单文本替换
document.body.innerHTML = document.body.innerHTML.replace(/original/g,"new");如果使用正则表达式版本(替换文档中出现的所有内容),则需要使用\符号对特殊字符进行转义,如/和"。
仅替换单个实例的:
var find = "if (top.location!=location) { top.location.href = location.href; }";
replace = "";
document.body.innerHTML = document.body.innerHTML.replace(find,replace);这将不适用于<script>位于最上方、最上方的页面。
确保设置了@run-at document.start。
https://stackoverflow.com/questions/4472433
复制相似问题