Sambungan WebSocket memerlukan mekanisme pengesahan yang berasingan kerana kekurangan pengendalian kebenaran terbina dalam. Melaksanakan pengesahan melalui perisian tengah HTTP boleh menangani kebimbangan keselamatan ini.
Cadangan 1: Sahkan Jabat Tangan Naik Taraf
Cadangan ini memerlukan pengubahsuaian kod untuk menghantar permintaan GET pengesahan awal melalui HTTP, tetapi memastikan permintaan naik taraf seterusnya melalui protokol WebSocket diterima. Kod di bawah membetulkan kecacatan dalam pelaksanaan asal:
<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>
Cadangan 2: Semak Bukti Kelayakan Selepas Sambungan
Cadangan ini memerlukan menyemak nama pengguna dan kata laluan yang dihantar oleh klien selepas sambungan WebSocket diwujudkan. Pelaksanaannya melibatkan:
Mengesahkan sambungan WebSocket melalui perisian tengah HTTP memerlukan pengubahsuaian bahagian pelayan dan pelanggan. Melaksanakan perubahan ini dengan betul memastikan pengesahan dan pematuhan protokol.
Atas ialah kandungan terperinci Bagaimana untuk Mengesahkan Sambungan WebSocket dengan HTTP Middleware?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!