websocket网络层详解_【技术分享】WebSocket漏洞与防护详解
2017-05-02 14:15:48 閱讀:1889次
預(yù)估稿費:120RMB
投稿方式:發(fā)送郵件至linwei#360.cn,或登陸網(wǎng)頁版在線投稿
socket簡介
一個socket是一次網(wǎng)絡(luò)通信中的一個端點。socket總是分為兩部分:一個IP地址和一個端口。
例如:當(dāng)您訪問www.securelayer7.net時,你的計算機和網(wǎng)站的服務(wù)器正在使用socket(端點)進行通信。網(wǎng)站的端點將是:www.securelayer7.net:80,你的計算機的端點將是你的IP地址,后跟任何隨機端口號,如192.168.0.111:6574
關(guān)于WebSocket
傳統(tǒng)上,HTTP活動是由客戶端請求資源而服務(wù)器來提供服務(wù)。服務(wù)器不能自己與客戶端通話。但這個限制已經(jīng)被新技術(shù)WebSocket消除了。
WebSockets提供持久連接,也稱為客戶端和服務(wù)器之間的全雙工連接,雙方可以隨時使用該連接開始發(fā)送數(shù)據(jù)。
它是如何工作的?
客戶端,如瀏覽器,加載具有WebSocket功能的網(wǎng)頁。
頁面的源代碼負(fù)責(zé)創(chuàng)建WebSocket連接。
該腳本通過WebSocket握手建立WebSocket連接。此過程從客戶端向服務(wù)器發(fā)送常規(guī)HTTP請求開始。此請求中包含upgrade請求頭,通知服務(wù)器客戶端希望建立WebSocket連接。
請求如下所示:
值得注意的是,WebSocket使用ws作為訪問方案而不是http。所以,上面的請求訪問了:ws://127.0.0.1:9000 / websocket
如果服務(wù)器支持WebSocket(針對上述請求),則它將在其響應(yīng)中使用upgrade請求頭進行回復(fù)。
響應(yīng)如下所示:
在這個階段,協(xié)議將從HTTP切換到WS。并且在瀏覽器和服務(wù)器之間建立全雙工連接。
在這個例子中,我們有一個WebSocket功能,它回傳客戶端發(fā)送的所有單詞。例如:如果用戶鍵入單詞“Hiii”,那么服務(wù)器也會用“Hiii”來回復(fù)。
請求:
響應(yīng):
用戶界面:
WebSockets的安全隱患
A.跨站W(wǎng)ebSocket劫持
注意下面的請求。Origin頭有不同的來源127.0.0.1:5555。該請求是使用受害者的cookie發(fā)送到WebSocket服務(wù)器。這意味著可以使用WebSocket發(fā)送類似于CSRF的攻擊。
但是,這種攻擊不止像CSRF將POST數(shù)據(jù)發(fā)送到WebSocket服務(wù)器,它還會讀取服務(wù)器響應(yīng)。這是因為默認(rèn)情況下WebSocket服務(wù)器不檢查“Origin”頭,它只是使用cookies檢查經(jīng)過身份驗證的用戶會話,并將響應(yīng)發(fā)送回請求的“Origin”。
因此,在上述情況下,攻擊者也可以讀取響應(yīng),從而代表受害者控制雙向通信。
防護:
檢查請求的“Origin”頭。既然,這個標(biāo)題是為了防止跨源攻擊。如果“Origin”不被信任,那么只需拒絕該請求。例如:如果您的網(wǎng)站的域名為www.example.com,請檢查請求是否源自該來源,如果是,則處理該請求。如果否,則拒絕。
另一個解決方案是使用基于會話的個人隨機令牌(就像CSRF-Tokens)。生成服務(wù)器端,并將它們放在客戶端的隱藏字段中。并要求驗證。
B.網(wǎng)絡(luò)敏感信息泄露
就像HTTP是純文本協(xié)議一樣,WebSockets協(xié)議也稱為純文本。這導(dǎo)致攻擊者捕獲和修改網(wǎng)絡(luò)上的流量。
防護:
建議使用加密(TLS)WebSockets連接。它的URI方案是wss://。默認(rèn)端口為443。
如下演示,請求訪問ws://127.0.0.1:900/websocket/。如果它是一個安全連接,那么請求將訪問wss://127.0.0.1:900/websocket/。
C.拒絕服務(wù)
默認(rèn)情況下,WebSockets允許無限制的連接導(dǎo)致DOS。以下是無限次連接到WebSocket服務(wù)器的小腳本。
執(zhí)行此腳本后,讓我們看看WebSocket服務(wù)器的日志:
我們可以看到,幾秒鐘內(nèi)就已經(jīng)完成了475個連接。這將耗盡服務(wù)器資源,最終導(dǎo)致DOS攻擊。
防護:
使用基于IP的速率限制將有助于解決這個問題。
速率限制應(yīng)允許5-10連接自由,即不進行任何安全檢查。但在10個連接之后,如果同一個IP嘗試連接,那么應(yīng)該向用戶顯示驗證碼,以確保自動化工具不會產(chǎn)生惡意請求,同時合法用戶不會被拒絕服務(wù)。
結(jié)論
WebSockets非常適合全雙工通信,有許多聊天應(yīng)用程序和社交網(wǎng)站使用。實現(xiàn)WebSockets使應(yīng)用程序更具可用性和吸引力。但就像任何其他技術(shù)一樣,也需要在考慮安全性的情況下使用。
參考文獻
總結(jié)
以上是生活随笔為你收集整理的websocket网络层详解_【技术分享】WebSocket漏洞与防护详解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2018-10-28
- 下一篇: 平滑数据迁移,不影响服务