事情的起因是这样的,国外一哥们Cyber Security在推特上发了这么一条推文:kxM免费翻墙网
kxM免费翻墙网
神秘的12行代码(图片来自0xroot)kxM免费翻墙网
这哥们声称,如果你使用上述这段12行的JavaScript代码,就可以能让firefox、chrome、safari浏览器崩溃,而且还能让iphone重启,安卓手机闪退!kxM免费翻墙网
网友们起初并不相信,于是继续在推特上深挖,发现另一小哥IT Security Tweets也发过类似的推文:kxM免费翻墙网
kxM免费翻墙网
依旧是这段代码(图片来自0xroot)kxM免费翻墙网
完整HTML代码如下:kxM免费翻墙网
<html>kxM免费翻墙网
<body>kxM免费翻墙网
<script>kxM免费翻墙网
var total="";kxM免费翻墙网
for (var i=0;i<1000000;i++)kxM免费翻墙网
{kxM免费翻墙网
total= total+i.toString();kxM免费翻墙网
history.pushState(0,0,total);kxM免费翻墙网
}kxM免费翻墙网
</script>kxM免费翻墙网
</body>kxM免费翻墙网
</html>kxM免费翻墙网
注意:前方高能!!kxM免费翻墙网
注意:前方高能!!kxM免费翻墙网
注意:前方高能!!kxM免费翻墙网
如果光用说的你可能不信kxM免费翻墙网
所以再此附上demo 感(shou)兴(jian)趣的可以试试:kxM免费翻墙网
http://www.0xroot.cn/demo.html(注意:请保存浏览器正在运行的编辑内容或任务!) kxM免费翻墙网
点开后会发生什么?反正我的第一反应是这样的:kxM免费翻墙网
kxM免费翻墙网
简直瞎了我的眼!kxM免费翻墙网
如果你是PC端用户,点开链接以后,电脑CPU内存极有可能一路狂飙直至浏览器崩溃卡死...kxM免费翻墙网
如果你是移动端(安卓、iPhone)用户,点开链接以后你的浏览器会闪退!在微博、微信点开链接也同样会闪退。kxM免费翻墙网
为什么会发生此现象呢?对此我在知乎上找到了一位名为“小米”的大神解答:kxM免费翻墙网
history.pushstate() 是HTML5引入的API,pushState将指定的URL添加到浏览器历史里,存储当前历史记录点。 当 i<100000 的时候会循环的 将 total记录到浏览器历史里面,重复多了,浏览器就承受不住了,自然就崩了。kxM免费翻墙网
好吧,反正对于连“hello world”都不会编的我,是一点也看不明白...总之牛气炫酷吊炸天就对了! kxM免费翻墙网
(注:文章部分信息来源于0xroot http://www.freebuf.com/articles/terminal/93807.html)kxM免费翻墙网
来自http://tech.sina.com.cn/mobile/n/n/2016-01-23/doc-ifxnuvxc1704271.shtmlkxM免费翻墙网
閵嗏偓
|