看了Monyer的文章:
《iframe的防插与强插(二)》:/article/200902/31888.html
代码如下:
JavaScript代码
<script>
window.onload = function(){
if(top!=self){
var f = document.createElement("form");
f.action=location;
f.target="_parent";
document.body.appendChild(f);
f.submit();
}
};
</script>
强制提交, 我仔细看了这篇文章, 后来实践了下, 发现两个onload会后面的覆盖前面的onload。
并且防御代码中在操作"body"。
所以这段代码一定是应用于页面最下面。
再看了看之前的
《iframe的防插与强插》:/article/200902/31827.html
发现攻击者至少可以控制一段JS, 所以才可以“强插”。
最后Monyer给出了一个方案。
不过仔细看看, 还是有很大问题的。
昨晚在YY, JS里有个SLEEP这个函数, 让后面的代码等上“半年”才执行, 那他的方案就失效了。
于是测试, 居然成功后。
早上和大家聊这个事情, 被狠狠的打击了下, 原来JS根本没这个函数。 。 。 那后面的的确没执行了(JS出错)。 囧。 。 。
经过仔细研究, 终于想到了破解的方法。 HOOK。 。 。
看代码, 我把monyer的代码放进去, 然后不让他执行顺利。
JavaScript代码
<head>
</head>
<body>
呵呵。 。 。
</body>
<script>
document.createElement = function(test)
{
var f = new Object();
f.action=location;
f.target="_parent";
f.submit = function (){};
return f;
}
document.body.appendChild = function(test){}
window.onload = function(){alert(1);}
//----------------------------下面是Monyer的方法。 原样copy。
window.onload = function(){
if(top!=self){
var f = document.createElement("form");
f.action=location;
f.target="_parent";
document.body.appendChild(f);
f.submit();
}
};
//广告时间http://www.inbreak.net
alert('hackedbykxlzx');
</script>
做一个类, HOOK掉这个方法里所有用掉的东西。 。 。 嘿嘿。 。 。 同时保证后面的JS正确执行
……