最近,國外的Twitter網友開始流傳了一段傳聞,據說只要用12行的Javascript程式碼,就可以把瀏覽器搞到崩潰,如果在iPhone上使用的話,還可以把iPhone也搞到當掉重啟。真有這麼神奇嗎?
在上週,一些與安全相關的Twitter帳號,都發表了類似的推文。
▲「把你的Firefox、Chrome、Safari瀏覽器搞掛,還能讓iPhone重啟,只靠這幾行Javascript程式碼。」
▲搞掛你朋友的瀏覽器、重啟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>
據說如果執行了這個Javascript,在瀏覽器上使用的話,記憶體使用率會一直狂飆,導致瀏覽器崩潰。而如果是iPhone上用Safari,則會導致iPhone 重啟。
根據網友的解讀,表示造成這樣的主要原因是,在這個程式碼中,「history.pushstate()」是HTML5引入的API,其中pushState是用來將指定的URL添加到瀏覽器歷史裡,儲存歷史紀錄。但是這個指令是被包在i迴圈裡頭,這個迴圈會重複不斷的將指定的URL一直加到歷史紀錄裡,而迴圈重複了10萬次。
如果你真的很想嘗試看看,那麼國外已經有人架好一個網站,等著考驗你的瀏覽器以及手機,連結在此。
根據國外媒體嘗試表示,包括在它們執行iOS 9.2.1的iPhone 6s、iPhone 5s以及執行iOS 9.2的iPhone 6上面全都無一倖免。換句話說,只要是使用最新的iPhone的版本,連結到這個網站都有風險。
如果連結到這個網站,它會花一段時間載入,然後Safari將會崩潰,或是強制重啟你的iPhone,將你送回到主頁面或是其它的畫面,依照你的設定不同而定。你的手機可能會損失一些頁籤記錄,不過除此之外並沒有任何風險。
不過,我們試過在PC的瀏覽器上點選這個網頁,不過就僅僅只是載入太久沒有回應而已,把這個頁面關掉也就好了,倒是沒有發生所謂崩潰的現象。
追根究底,其實所謂的「當掉」,主要的原理就是這個Javascript會一直強迫讓瀏覽器去儲存紀錄,由於一直反覆這個動作,導致瀏覽器失去了回應。
資料來源:9to5mac、huffingtonpost
有什麼嗎?
貴站大量的 JavaScript 就已經把我的瀏覽器弄掛了
你們可以繼續依然故我沒關係