夜火博客

iframe的防插与强插

2009-03-04
技术文章
iframe
技术类
2分钟
364字

iframe的防插与强插,网上通用的防插那版是(子):

1
if(top.location != self.location){
2
top.location = self.location;
3
}

强插方案为(父):

1
var location="";

其中这个location是对被赋值的top.location方法的覆盖,导致方法失效。

昨天又遇到另外一个版本(子):

1
if(window!=parent){
2
parent.navigate(location);
3
}

强插方案为(父):

1
var navigate="";

即是对parent.navigate方法的覆盖,导致再次引用失效。

那么两个和在一起的强插方案是,在iframe之前加入:

1
<script>var location="";var navigate="";</script>

介绍了“市面上”能见到的两种防御被iframe的方法,以及相应的变态突破方法。

貌似把“受害人”逼上绝路了,我们再来看看这两个方法:

它们都能够判断出自己已经被XX了,可是它们是怎么做的呢?

方法一说:先生,请您出去。

方法二说:同志,请您出去!

然而这先生也说了句:“我就不出去!”

因为“受害人”和这位先生又不是一家子,似乎通过命令对方还无可奈何 —— 同源策略!

但事实上,“请您出去”这种方式显然是针对君子不对小人的,所以Monyer教你一种好方法——“乱棍打出去!”

1
<script>
2
window.onload = function(){
3
if(top!=self){
4
var f = document.createElement("form");
5
f.action=location;
6
f.target="_parent";
7
document.body.appendChild(f);
8
f.submit();
9
}
10
};
11
</script>

目前我个人还没有找到突破的方法,所以至少比以上两种方法更暴力一些!

作者:Monyer

本文标题:iframe的防插与强插
文章作者:夜火
发布时间:2009-03-04