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