emu的专栏

原创 为IE找个新死法 收藏

新一篇: 用shindig搭Opensocial容器

IE在解释表达式的时候显然大有优化的余地,FireFox就没这个毛病。下面这段小代码可以轻松让IE崩溃掉:
var n=32768;
var s=new Array(n).join("0+")+0;
if(confirm("真的要杀了浏览器吗?")){
    eval(s);
    alert(
"杀不掉,试试把n调大一点?");
}

其实就是让IE解析一个“0+0+0+0....”的表达式。
在我的机器上,IE6跑到32255个加法计算就自动关闭了(可以作为一个新的无提示关闭浏览器漏洞呵呵,会把同一个进程打开的全部窗口一起杀掉),IE7还要差些,在31515就挂了。opera也好不到哪里去,32180就崩溃了。而FireFox一直跑到2^27(ie和opera还不到2^15)的时候把我的内存全吃光了,在虚拟内存支持下还是可以执行完成:
var s="0+",n=27 ;
for(var i=0;i<n;i++) s+=s; 
alert(s.length
/2
s
+=0
if(confirm("真的要杀了浏览器吗?")){ 
eval(s); 
alert(
"杀不掉,试试把n调大一点?"); 
}
 

发表于 @ 2008年02月01日 18:53:00|评论(loading...)|编辑

旧一篇: 在IE下面指定表单编码方式

评论

#WinGeek 发表于2008-02-02 09:01:27  IP: 131.107.0.*
确实挺有意思的死法
#yuyk 发表于2008-02-02 09:56:22  IP: 222.66.167.*
有啥意义?
#r_mosaic 发表于2008-02-04 11:02:08  IP: 211.167.159.*
啊?那么多年了,IE 里面大概还在用 BSTR?
#dianshiju 发表于2008-02-11 13:50:50  IP: 125.115.151.*
对其使用性表示怀疑……
#cuixiping 发表于2008-05-09 19:53:03  IP: 59.61.64.*
有点儿意思
发表评论  


当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
Csdn Blog version 3.1a
Copyright © emu