WebSockets 安全性



出於安全原因,協議的設計應該考慮安全性。WebSocket 是一種全新的協議,並非所有 Web 瀏覽器都能正確實現它。例如,有些瀏覽器仍然允許混合使用 HTTP 和 WS,儘管規範暗示相反。在本章中,我們將討論使用者應該瞭解的一些常見安全攻擊。

拒絕服務攻擊

拒絕服務 (DoS) 攻擊試圖使機器或網路資源無法為請求它的使用者提供服務。假設有人以極短的時間間隔向 Web 伺服器發出無限數量的請求。伺服器無法處理每個連線,要麼停止響應,要麼響應速度過慢。這可以稱為拒絕服務攻擊。

拒絕服務攻擊對終端使用者非常令人沮喪,他們甚至無法載入網頁。

DoS 攻擊甚至可以應用於對等通訊,迫使 P2P 網路的客戶端同時連線到受害者的 Web 伺服器。

中間人攻擊

讓我們透過一個例子來理解這一點。

假設一個人 A 透過即時通訊客戶端與他的朋友 B 聊天。一些第三方想要檢視你們交換的訊息。因此,他分別與兩人建立連線。他還向 A 和他的朋友 B 傳送訊息,作為你們通訊中隱形的中間人。這被稱為中間人攻擊。

對於未加密的連線,中間人攻擊更容易進行,因為入侵者可以直接讀取資料包。當連線加密時,攻擊者必須解密資訊,這可能非常困難。

從技術角度來看,攻擊者攔截公鑰訊息交換併發送訊息,同時用自己的金鑰替換請求的金鑰。顯然,使攻擊者難以進行攻擊的有效策略是將 SSH 與 WebSockets 一起使用。

在交換關鍵資料時,最好使用安全的 WSS 連線而不是未加密的 WS 連線。

跨站指令碼攻擊 (XSS)

跨站指令碼 (XSS) 是一種漏洞,使攻擊者能夠將客戶端指令碼注入網頁或應用程式。攻擊者可以使用您的應用程式中心傳送 HTML 或 Javascript 程式碼,並讓此程式碼在客戶端機器上執行。

WebSocket 本地防禦機制

預設情況下,WebSocket 協議的設計是安全的。在現實世界中,使用者可能會遇到由於瀏覽器實現不當而導致的各種問題。隨著時間的推移,瀏覽器廠商會立即修復任何問題。

當使用透過 SSH(或 TLS)的安全的 WebSocket 連線時,會新增額外的安全層。

在 WebSocket 世界中,主要關注的是安全連線的效能。儘管頂部仍然存在額外的 TLS 層,但協議本身包含對此類使用的最佳化,此外,WSS 透過代理的工作更加流暢。

客戶端到伺服器的掩碼

在 WebSocket 伺服器和 WebSocket 客戶端之間傳輸的每條訊息都包含一個名為掩碼金鑰的特定金鑰,該金鑰允許任何符合 WebSocket 標準的中間體取消掩碼並檢查訊息。如果中間體不符合 WebSocket 標準,則訊息不會受到影響。實現 WebSocket 協議的瀏覽器處理掩碼。

安全工具箱

最後,可以提供一些有用的工具來調查 WebSocket 客戶端和伺服器之間資訊流,分析交換的資料並識別可能的風險。

瀏覽器開發者工具

就開發者支援而言,Chrome、Firefox 和 Opera 都是優秀的瀏覽器。它們的內建工具可以幫助我們確定客戶端互動和資源的幾乎任何方面。這對安全目的起著重要作用。

廣告
© . All rights reserved.