Les connexions WebSocket nécessitent des mécanismes d'authentification distincts en raison de leur manque de gestion des autorisations intégrée. La mise en œuvre de l'authentification via un middleware HTTP peut résoudre ce problème de sécurité.
Suggestion 1 : Authentifier la prise de contact de mise à niveau
Cette suggestion nécessite de modifier le code pour envoyer la demande d'authentification initiale GET via HTTP, mais en veillant à ce que les demandes de mise à niveau ultérieures via le protocole WebSocket soient acceptées. Le code ci-dessous corrige le défaut de l'implémentation d'origine :
<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>
Suggestion 2 : Vérifier les informations d'identification après la connexion
Cette suggestion nécessite de vérifier le nom d'utilisateur et le mot de passe envoyés par le client une fois la connexion WebSocket établie. La mise en œuvre implique :
L'authentification des connexions WebSocket via un middleware HTTP nécessite des modifications côté serveur et côté client. La mise en œuvre correcte de ces modifications garantit à la fois l'authentification et le respect du protocole.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!