10. Security Considerations (Considérations de sécurité)
La conception du protocole WebSocket prend en compte plusieurs menaces de sécurité. Ce chapitre décrit les principales considérations de sécurité et les mesures d'atténuation recommandées.
10.1 Non-Browser Clients (Clients non-navigateurs)
Le protocole WebSocket peut être utilisé par n'importe quel client, sans se limiter aux navigateurs Web. Les clients non-navigateurs n'ont pas la protection de la politique de même origine du navigateur.
Risques :
- Peut falsifier les en-têtes Origin
- Peut contourner les restrictions CORS
- Peut initier de nombreuses connexions
Atténuation :
- Les serveurs doivent implémenter une authentification supplémentaire
- Utiliser la validation par jeton (par exemple, JWT)
- Implémenter la limitation de débit
- Valider toutes les données d'entrée
10.2 Origin Considerations (Considérations relatives à l'origine)
L'en-tête Origin est un mécanisme de sécurité critique.
Pratiques recommandées :
- Valider Origin : Les serveurs doivent valider l'en-tête Origin
- Approche liste blanche : Utiliser des listes blanches plutôt que des listes noires
- Origines dynamiques : Utiliser la configuration de base de données si nécessaire
Note : Les clients non-navigateurs peuvent falsifier Origin, ne pas se fier uniquement à la validation Origin.
10.3 Attacks On Infrastructure (Attaques sur l'infrastructure)
Attaques par empoisonnement du cache
WebSocket utilise le mécanisme de masquage pour prévenir l'empoisonnement du cache :
- Toutes les trames client-serveur DOIVENT être masquées
- Les trames serveur-client NE DOIVENT PAS être masquées
- Utiliser des clés de masquage aléatoires
Attaques de l'homme du milieu
Atténuation :
- Utiliser wss:// (chiffrement TLS)
- Vérifier les certificats du serveur
- Implémenter l'épinglage de certificat
10.4 Implementation-Specific Limits (Limites spécifiques à l'implémentation)
Les implémentations doivent définir des limites raisonnables pour prévenir les attaques par épuisement des ressources.
Limites recommandées
1. Limite de taille de message 2. Limite du nombre de connexions 3. Limitation du taux de messages
10.5 WebSocket Client Authentication (Authentification client WebSocket)
Méthodes d'authentification
- Authentification par cookie pendant la poignée de main
- Jeton dans les paramètres URL
- Authentification du premier message
- En-têtes de poignée de main personnalisés
10.6 Connection Confidentiality and Integrity (Confidentialité et intégrité de la connexion)
Exigences TLS/SSL
Les environnements de production doivent utiliser wss:// :
✅ Avantages de TLS :
- Chiffre toutes les données transmises
- Empêche l'écoute clandestine
- Empêche l'altération des données
- Authentification du serveur
❌ Risques de ws:// :
- Transmission en clair
- Facile à intercepter
- Ne peut pas vérifier l'identité du serveur
10.7 Handling of Invalid Data (Gestion des données invalides)
Les implémentations doivent gérer correctement les données invalides pour prévenir les vulnérabilités de sécurité.
Texte UTF-8 invalide
Violations de protocole
Lorsque des violations de protocole sont détectées, la connexion DOIT être fermée.
10.8 Use of SHA-1 by the WebSocket Handshake (Utilisation de SHA-1 par la poignée de main WebSocket)
La poignée de main utilise l'algorithme de hachage SHA-1. Bien que SHA-1 ait des attaques de collision connues, il est sûr dans le contexte de la poignée de main.
Liste de contrôle de sécurité
Lors de l'implémentation de services WebSocket, vérifier :
- Utiliser wss:// (TLS) au lieu de ws://
- Valider l'en-tête Origin
- Implémenter l'authentification et l'autorisation
- Définir des limites de taille de message
- Définir des limites de nombre de connexions
- Implémenter la limitation de débit
- Valider toutes les données d'entrée
- Gérer correctement les violations de protocole
- Enregistrer les événements de sécurité
- Mettre à jour régulièrement la configuration TLS
- Surveiller les modèles de connexion anormaux
- Implémenter des mécanismes de délai d'attente
Liens de référence
- Chapitre précédent : 9. Extensions
- Chapitre suivant : 11. IANA Considerations (Considérations IANA)