<tr id="ublig"><code id="ublig"><delect id="ublig"></delect></code></tr>
  • <noframes id="ublig"></noframes>
    1. <output id="ublig"></output>

    2. <mark id="ublig"><rp id="ublig"></rp></mark>

      <sup id="ublig"></sup>

      初識 客戶端js DDOS攻防

      發布日期:2021年04月17日 瀏覽次數:11245 js DDOS

      前言

      DDoS(又名"分布式拒絕服務")攻擊歷史由來已久,但卻被黑客廣泛應用。我們可以這樣定義典型的DDoS攻擊:攻擊者指使大量主機向服務器發送數據,直到超出處理能力進而無暇處理正常用戶的合法請求,最終導致用戶無法正常訪問網站。

      近年來,DDoS攻擊手段已日趨多元化——攻擊者通過各種奇技淫巧誘使不知情主機參加攻擊。比如,[注1]歷史上數據量最大(超過400Gbps)的DDoS攻擊就是通過[注2]NTP反射完成的。時至今日,我們已經發現一個令人不安的趨勢:攻擊者通過惡意的JavaScript誘使不知情的網站用戶參加DDoS攻擊。NTP反射或[注3]DNS反射可造成的最大損失是由未經防護的服務器數量決定的。一般損失會隨著給服務器打補丁而降低,最大的攻擊力度也受限于這些服務器的出站能力。不過,JavaScript DDoS卻能利用任何安裝了網頁瀏覽器的主機都參與攻擊,換句話說,其潛在的攻擊能力是無限大的。

      這篇文章中,我們將從"攻"和"防"兩方面與您一同梳理JavaScript DDoS:

      1. 攻擊:攻擊者如何通過惡意地址、服務器劫持、中間人等手段來實施DDoS攻擊。

      2. 防御:網站如何使用HTTPS和SRI(Subresource Integrity)等手段來避免攻擊。

       

      JavaScript DDOS 攻擊原理

      絕大多數網站交互是由JavaScript實現的。網站的交互一般通過以下2種方法實現:

      1. 直接在HTML中添加JavaScript;

      2. 引用外部資源(<script src="##">)從而使瀏覽器獲取src指向的代碼并運行。

      "異步加載內容"技術是使Web2.0時代爆發的關鍵因素之一。由于新內容的加載可以完全脫離傳統的打開鏈接或加載頁面的方式,網頁交互形式也顯得愈加豐富。但事有兩面,JavaScript的HTTP(S)請求使網站交互更加有趣的同時,也使瀏覽器更容易變成攻擊者的武器。

      舉個例子,下面的腳本可以不斷向受害網站發送請求:

       

      1
      2
      3
      4
      5
      6
      7
      8
      function imgflood() { 
        var TARGET = 'victim-website.com'
        var URI = '/index.php?'
        var pic = new Image()
        var rand = Math.floor(Math.random() * 1000)
        pic.src = 'http://'+TARGET+URI+rand+'=val'
      }
      setInterval(imgflood, 10) 

       

      這段惡意腳本會在網頁上以每秒100次的頻率不斷的創建圖片標簽,這些圖片地址都是指向到受害者的網站。因此,訪問該頁面的人都會在不知情的情況下參與這次攻擊。由于訪問者瀏覽器發送的消息是合法的HTTP請求,[注4]我們將其稱為"應用層攻擊"。不同于傳統的NTP/DNS反射攻擊(僅僅是堵塞數據傳輸通道),應用層攻擊將使網站服務器在持續無意義的數據處理中耗盡資源并最終無力響應正常請求。

       

      如前所述,如果攻擊者建立一個包含惡意JS代碼網頁的站點,那么該站點的訪問者將成為DDoS攻擊的參與者。由此推導:該網頁的訪問量越大,DDoS的流量也越大。然而,由于一般情況下該網頁的訪問量有限,因此DDoS攻擊破壞力也有限。那么,要想實施一次真正"給力"的DDoS攻擊,還需要動動腦筋。

       

      利用第三方JavaScript文件

      眾所周知,很多網站都會使用通用的JavaScript庫。也有相當多網站為了節省帶寬或提高體驗,直接引用網絡中的第三方的JavaScript庫。據統計,[注5]2014年世界上約30%的網站使用jQuery(一種非常流行的JavaScript庫)。其他被廣泛使用的JS包括但不限于Facebook SDK和Google Analytics。

      如果一個網站包含指向第三方JS文件的腳本標簽,那么所有訪問者將下載并執行這段腳本??梢韵胂?,如果攻擊者能夠攻破含有主流JS文件的服務器,并添加一段DDoS代碼,所有網站訪問者將成為DDoS的攻擊者之一。

       

       

      2014年9月,[注6]RiskIQ曾報道"引用外部jQuery的網站可被黑客利用",而攻擊者可以用惡意代碼替代正常代碼。由此可見,攻擊者給數以萬計的網站插入惡意JS代碼將不再只是一個理論說法。

       

      什么是SRI?

      第三方資源被利用已是司空見慣的問題了。如果腳本已經被黑客篡改,在HTTP中沒有任何機制可使網站屏蔽其運行。為了解決這個問題,W3C提出了一個新概念——SRI(Subresource Integrity)。SRI允許網站告知瀏覽器,僅在腳本完全符合預期時才運行它。

      引用外部鏈接的代碼如下:

       

       

      在引入SRI概念之前,無論文件內容是什么,瀏覽器都將下載并運行該.js文件。如果有人將文件篡改為惡意代碼,瀏覽器依然會毫不猶豫的運行腳本。引入SRI的概念后,你可以這樣告訴瀏覽器:僅運行符合你預期的腳本。哈希加密可以方便地唯一辨識一段數據,因此我們可以通過哈希加密方法實現SRI——文件以其獨一無二的哈希值作為指紋。你可以將腳本的可靠版本的哈希值記錄在"integrity"屬性中。下載該腳本后,瀏覽器將立即計算該腳本的哈希值并與腳本"integrity"屬性標簽中的哈希值作比較。如果二者不吻合,那么可以確定腳本已被篡改過,則瀏覽器就不會運行它。

       

      1
      2
      integrity="sha256-C6CB9UYIS9UJeqinPHWTHVqh/E1uhG5Twh+Y5qFQmYg=" crossorigin="anonymous">

       

      如上引入SRI標簽可以保護網站訪問者不受被篡改的第三方JS主機影響。計算哈希值是一個簡單、一次性的工作。[注7]而且甚至已有專門的網站可以為您計算哈希值。更新:為確保瀏覽器正確執行同源策略及防止跨站腳本攻擊(XSS),腳本的crossorigin屬性和CORS(Cross-Origin Resource Sharing)頭文件一般都會做SRI。目前SRI還未被瀏覽器廣泛支持,但Chrome和Firefox都已將其列入開發計劃中。由于服務器攻擊很容易被發現并修復,因此攻擊者已經轉而使用其他方法插入惡意JS代碼。最新的方法就是:[注8]中間人攻擊。

       

      中間人攻擊

      從web服務器出發,一個網站要遍歷網絡,經過若干跳才能到達你的瀏覽器。這個過程中任何一跳的主機都有可能被各種方法修改數據,比如篡改HTML或JavaScript的內容。如果在網絡通信過程中,主機執行惡意行為,比如在網頁中插入惡意JS代碼,我們就將其稱為"中間人攻擊"。在信息傳輸過程中,修改網站內容是ISP(網絡服務提供商)和WiFi服務商慣用的盈利手段。

      例如:一些酒店網絡、移動網絡就會插入廣告或其他跟蹤cookie到用戶瀏覽的網站中。合法的業務一般不會給網站插入惡意攻擊代碼,但是這并不代表因特網上的其他人沒有能力這樣做。如果攻擊者能獲得類似ISP的網絡位置特權,比如網絡互聯和交換節點,攻擊者就可以給經過的網站插入JS。而如果這段JS中含有DDoS腳本,所有網站訪問者將成為DDoS參與者。這會發生在任何穿過"流氓網絡"的網站身上。

      更糟糕的是,如果訪問第三方JavaScript文件的路徑也經過了攻擊者網絡,那么參與攻擊的瀏覽器數量將急劇增加。

       

       

      加密是能夠完全防止類似代碼注入的技術之一。使用HTTPS,瀏覽器與web服務器間之間的所有通信將被加密并授權,防止中間人修改代碼。如果你的網站完全使用HTTPS,不僅能夠防止ISP和WiFi服務商插入廣告或追蹤cookie,而且關鍵能夠防止你的網站被JavaScript攻擊所利用。

       

       

       

      JavaScript DDOS攻擊已成為日趨嚴重的互聯網安全問題之一。黑客隨時可能發起JavaScript DDoS攻擊,歡迎各位廠商/白帽子多多發文交流:)

       

      英文原文出自:https://blog.cloudflare.com/an-introduction-to-javascript-based-ddos/




      延伸閱讀

      微信小程序各種圖表繪制

      在做應用系統開發的時候,我們經常需要繪制各種統計圖表。如何做呢?這篇文章給你一個思路參考。

      初識 客戶端js DDOS攻防

      我們將從"攻"和"防"兩方面與您一同梳理JavaScript DDoS: 攻擊:攻擊者如何通過惡意地址、服務器劫持、中間人等手段來實施DDoS攻擊。 防御:網站如何使用HTTPS和SRI(Subresource Integrity)等手段來避免攻擊。

      百度編輯器上傳圖片時設置圖片展示的最大寬度

      百度編輯器上傳圖片能自動裁切圖片大小嗎? 這個我暫時不知道,不過作為應急辦法,可以暫時先設置圖片的最大寬度。如果哪位網友知道如何通過百度編輯器自動裁切壓縮圖片大小請告知,不勝感激。

      跨域資源共享 CORS 詳解

      CORS需要瀏覽器和服務器同時支持。目前,所有瀏覽器都支持該功能,IE瀏覽器不能低于IE10。 整個CORS通信過程,都是瀏覽器自動完成,不需要用戶參與。對于開發者來說,CORS通信與同源的AJAX通信沒有差別,代碼完全一樣。

      mysql 字符串截取

      數據庫開發過程中常用的字符串截取操作。

      dragsort:支持拖動排序js前端組建

      前端js拖拽排序組建, 看起來不錯. 收藏了.

      css選中子元素中不是第一個元素的3種方法

      前端開發中經常需要設置非第一個元素之外的樣式,這篇文章做一個總結. 需要的小伙伴歡迎查閱和分享.

      純 CSS 實現繪制各種三角形(各種角度)

      用CSS繪制三角形,這在前端開發過程中是比較常見的. 以前都是使用圖片代替, 當你看到這篇文章之后,也許以后遇到類似需求,就告別PS了.

      面向個體戶與個人的賬目小程序上線

      重點推薦給個體戶,個人家庭,個人合租用戶,臨時項目辦事等使用.用完即走,不轉內存, 可以多人合作記賬. AA記賬自動分賬. 單獨設置每個用戶的權限等非常實用的功能,大家合租的記賬隨時知道,統計功能也很強大,最重要是用起來很簡單,沒其他記賬產品那么復雜。

      廣西空中課堂在小程序發布視頻點播課

      覆蓋小學、初中、高中的12個年級的廣西中小學生“空中課堂”線上課程正式推出,而課堂小編輯選擇本公司小程序平臺發布,方便家中無法收視電視的同學方便使用手機端點播學習。
      亚洲综合憿情五月丁香五月网