Websocket安全性


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

拒絕服務

拒絕服務(DoS)攻擊會嘗試使請求它的使用者無法使用計算機或網路資源。假設有人向Web伺服器發出無限數量的請求,沒有或只有很短的時間間隔。伺服器無法處理每個連線,並將停止響應或將繼續響應太慢。這可以稱為拒絕服務攻擊。

拒絕服務對終端使用者來說非常令人沮喪,他們甚至無法載入網頁。DoS攻擊甚至可以應用於對等通訊,迫使P2P網路的用戶端同時連線到受害者Web伺服器。

中間人攻擊

下面借助一個例子來理解這一點。

假設A人正通過IM用戶端與他的朋友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在開發人員支援方面都是出色的瀏覽器。他們的內建工具可幫助我們確定用戶端互動和資源的所有方面。它在安全方面起著重要作用。