WebSocket 連線由於缺乏內建的授權處理而需要單獨的驗證機制。透過 HTTP 中間件實現身份驗證可以解決這個安全性問題。
建議1:驗證升級握手
此建議需要修改代碼透過HTTP 發送初始驗證GET 請求,但確保接受透過WebSocket 協定的後續升級請求。下面的程式碼修正了原始實作中的缺陷:
<code class="go">// server middleware func wsHandler(rw http.ResponseWriter, req *http.Request) { if req.Header.Get("Upgrade") != "websocket" { return } if !websocket.IsWebSocketUpgrade(req) { return } conn, err := upgrader.Upgrade(rw, req, nil) if err != nil { http.Error(rw, "upgrade failed", http.StatusBadRequest) return } // rest of authentication logic }</code>
建議2:連線後檢查憑證
此建議需要檢查由WebSocket 連線建立後的客戶端。實作涉及:
透過 HTTP 中介軟體驗證 WebSocket 連線需要伺服器端和用戶端的修改。正確實施這些變更可確保身份驗證和協議的遵守。
以上是如何使用 HTTP 中間件驗證 WebSocket 連線?的詳細內容。更多資訊請關注PHP中文網其他相關文章!