<track id="rffo1"><div id="rffo1"></div></track>
        <track id="rffo1"><div id="rffo1"></div></track>

            <nobr id="rffo1"><optgroup id="rffo1"></optgroup></nobr>

            亦強科技 > 開發資訊 > 使瀏覽器“爆炸”的12行代碼

            使瀏覽器“爆炸”的12行代碼


            2016年01月28日 15 分類:開發資訊

             隨便在網上以“十二行代碼 瀏覽器”為關鍵詞搜一下,就有一大堆類似結果:

             

              這十二行代碼的起源應該是Twitter上的 IT Security Tweets ? @F1r3h4nd :

              Crash your friend’s browser and restart Iphone with a link which has this script: #0day// 把帶有下面這個腳本的鏈接發給你的朋友,能讓你朋友的瀏覽器崩潰,而且能讓iPhone重啟。

             

              完整HTML代碼如下:

            view sourceprint?

            1<script>
            2  var total = "";
            3  for (var i = 0; i < 1000000; i++)
            4  {
            5    total = total + i.toString();
            6    history.pushState(0, 0, total);
            7  }
            8</script>

             


              有興趣的可以點擊這里測試一下。 【友情提醒:請先保存瀏覽器上的工作:) 拿來整人的被打死不負責哦~】

              點擊完可能產生的后果:

            •   PC端用瀏覽器打開:點開鏈接以后,電腦CPU內存極有可能一路狂飆直至瀏覽器崩潰卡死。

            •   移動端(安卓、iPhone)用三方瀏覽器打開:點開鏈接以后瀏覽器會閃退。

            •   移動端(安卓、iPhone)用嵌入瀏覽器的應用打開:在微博、微信客戶端中點開鏈接會閃退。

            •   iPhone用Safari打開:點開鏈接之后,手機可能會注銷重啟。

              以下是博主自己測試的結果:

             

             

              下面就來稍微解釋一下上面這段js代碼是如何讓瀏覽器崩潰的。

              這段代碼的核心就是 history.pushState() 方法。

              這個方法是 HTML5 的一個 API,用于向history添加當前頁面的記錄。簡單來說就是在不刷新頁面,也不打開新頁面的情況下,改變瀏覽器地址欄中的URL。這個技術可以解決AJAX遺留下來的問題。它和AJAX結合后,有個新的稱呼是PJAX(淘寶目前正在使用)。

              這里的代碼:history.pushState(0, 0, total); 只能起到一個效果,就是修改URL(只能修改當前目錄后的字符,無法修改全部域名。且不會發生跳轉或發送請求)。然后這里代碼循環了1000000次,也就是說URL修改了1000000次,每次新的URL都是之前一次的后面再加上 i.toString() 。這樣快速不停地向history中添加記錄,最終就會導致內存占用迅速增大到機器無法承受,然后瀏覽器崩潰。

              所以PC上面才會出現內存和CPU突然一路飆升,而手機的內存和處理器本身就跟PC沒得比,所以崩潰也是自然的。至于iPhone上的Safari是如何讓iPhone重啟的,這個就不得而知了。

             

            請將您的寶貴意見發給我們

            Copyright ? 2013-2023 廣州亦強科技有限公司 粵ICP備13085004號

                  <track id="rffo1"><div id="rffo1"></div></track>
                  <track id="rffo1"><div id="rffo1"></div></track>

                      <nobr id="rffo1"><optgroup id="rffo1"></optgroup></nobr>

                      性女传奇在线播放