最近,一段神秘的12行代碼在國外社交網絡上火了起來,據說能讓你的瀏覽器瞬間崩潰,iPhone秒重啟。到底是什么代碼這么神奇?
上周,國外網友Cyber Security@cyber__sec在Twitter上發布了這樣一段推文:
“使用下面這段javascript代碼,能讓Firefox、Chrome、Safari瀏覽器崩潰,還能讓iPhone重啟”。
事實上,更早的時候,IT Security Tweets ™ @F1r3h4nd也發布類似的內容:
“把下面這個腳本鏈接發送給你的朋友,搞癱他的瀏覽器,讓他的iPhone重啟。”
喏,就是下面這段代碼:
<html>
<body>
<script>
var total="";
for (var i=0;i<1000000;i++)
{
total= total+i.toString ();
history.pushState (0,0,total);
}
</script>
</body>
</html>
還有人專門做成了鏈接:http://www.0xroot.cn/demo.html(不怕死的可以試試,請提前保存好瀏覽器內容
網友驗證,如果是PC用戶,內存使用率一路狂飆,瀏覽器會瞬間卡死;如果是手機用戶,點開鏈接瀏覽器會閃退,而微博、微信內打開鏈接同樣會閃退。如果是iPhone用戶使用Safari打開之后鏈接,手機重啟。
為什么會這樣呢?
有知乎網友給出這樣的解答:
“history.pushstate()是HTML5引入的API,pushState將指定的URL添加到瀏覽器歷史里,存儲當前歷史記錄點。 當 i<100000 的時候會循環的將 total記錄到瀏覽器歷史里面,重復多了,瀏覽器就承受不住了,自然就崩了。”
簡直瞎了我的眼!
如果你是PC端用戶,點開鏈接以后,電腦CPU內存極有可能一路狂飆直至瀏覽器崩潰卡死...
如果你是移動端(安卓、iPhone)用戶,點開鏈接以后你的瀏覽器會閃退!在微博、微信點開鏈接也同樣會閃退。
為什么會發生此現象呢?對此我在知乎上找到了一位名為“小米”的大神解答:
history.pushstate()是HTML5引入的API,pushState將指定的URL添加到瀏覽器歷史里,存儲當前歷史記錄點。 當 i<100000 的時候會循環的將 total記錄到瀏覽器歷史里面,重復多了,瀏覽器就承受不住了,自然就崩了。
好吧,反正對于連“hello world”都不會編的我,是一點也看不明白...總之牛氣炫酷吊炸天就對了!
新聞熱點
疑難解答
圖片精選