10. Security Considerations (Sicherheitsüberlegungen)
Das Design des WebSocket-Protokolls berücksichtigt mehrere Sicherheitsbedrohungen. Dieses Kapitel beschreibt die wichtigsten Sicherheitsüberlegungen und empfohlene Abhilfemaßnahmen.
10.1 Non-Browser Clients (Nicht-Browser-Clients)
Das WebSocket-Protokoll kann von jedem Client verwendet werden, nicht nur von Webbrowsern. Nicht-Browser-Clients haben nicht den Schutz der Same-Origin-Policy des Browsers.
Risiken:
- Können Origin-Header fälschen
- Können CORS-Beschränkungen umgehen
- Können zahlreiche Verbindungen initiieren
Abhilfe:
- Server müssen (MUST) zusätzliche Authentifizierung implementieren
- Token-Validierung verwenden (z.B. JWT)
- Rate-Limiting implementieren
- Alle Eingabedaten validieren
10.2 Origin Considerations (Origin-Überlegungen)
Der Origin-Header ist ein kritischer Sicherheitsmechanismus.
Empfohlene Praktiken:
- Origin validieren: Server sollten (SHOULD) den Origin-Header validieren
- Whitelist-Ansatz: Whitelists statt Blacklists verwenden
- Dynamische Origins: Datenbankonfiguration verwenden, falls dynamische Origins benötigt werden
Hinweis: Nicht-Browser-Clients können Origin fälschen, daher nicht allein auf Origin-Validierung verlassen.
10.3 Attacks On Infrastructure (Angriffe auf Infrastruktur)
Cache-Poisoning-Angriffe
WebSocket verwendet Maskierungsmechanismus zur Verhinderung von Cache-Poisoning:
- Alle Client-zu-Server-Frames MÜSSEN maskiert sein
- Server-zu-Client-Frames DÜRFEN NICHT maskiert sein
- Zufällige Maskierungsschlüssel verwenden
Man-in-the-Middle-Angriffe
Abhilfe:
- wss:// verwenden (TLS-Verschlüsselung)
- Serverzertifikate überprüfen
- Certificate Pinning implementieren
10.4 Implementation-Specific Limits (Implementierungsspezifische Grenzen)
Implementierungen sollten (SHOULD) vernünftige Grenzen setzen, um Ressourcenerschöpfungsangriffe zu verhindern.
Empfohlene Grenzen
1. Nachrichtengrößenbegrenzung 2. Verbindungsanzahlbegrenzung 3. Nachrichtenratenbegrenzung
10.5 WebSocket Client Authentication (WebSocket-Client-Authentifizierung)
Authentifizierungsmethoden
- Cookie-Authentifizierung während des Handshakes
- Token in URL-Parametern
- Erste-Nachricht-Authentifizierung
- Benutzerdefinierte Handshake-Header
10.6 Connection Confidentiality and Integrity (Verbindungsvertraulichkeit und -integrität)
TLS/SSL-Anforderungen
Produktionsumgebungen müssen (MUST) wss:// verwenden:
✅ TLS-Vorteile:
- Verschlüsselt alle übertragenen Daten
- Verhindert Abhören
- Verhindert Datenmanipulation
- Server-Authentifizierung
❌ ws://-Risiken:
- Klartextübertragung
- Leicht abzufangen
- Kann Server-Identität nicht verifizieren
10.7 Handling of Invalid Data (Umgang mit ungültigen Daten)
Implementierungen müssen (MUST) ungültige Daten korrekt behandeln, um Sicherheitslücken zu verhindern.
Ungültiger UTF-8-Text
Protokollverletzungen
Wenn Protokollverletzungen erkannt werden, MUSS die Verbindung geschlossen werden.
10.8 Use of SHA-1 by the WebSocket Handshake (Verwendung von SHA-1 beim WebSocket-Handshake)
Der Handshake verwendet den SHA-1-Hash-Algorithmus. Obwohl SHA-1 bekannte Kollisionsangriffe hat, ist er im Handshake-Kontext sicher.
Sicherheitscheckliste
Bei der Implementierung von WebSocket-Diensten prüfen:
- wss:// (TLS) statt ws:// verwenden
- Origin-Header validieren
- Authentifizierung und Autorisierung implementieren
- Nachrichtengrößenbegrenzungen festlegen
- Verbindungsanzahlbegrenzungen festlegen
- Rate-Limiting implementieren
- Alle Eingabedaten validieren
- Protokollverletzungen korrekt behandeln
- Sicherheitsereignisse protokollieren
- TLS-Konfiguration regelmäßig aktualisieren
- Abnormale Verbindungsmuster überwachen
- Timeout-Mechanismen implementieren
Referenzlinks
- Vorheriges Kapitel: 9. Extensions (Erweiterungen)
- Nächstes Kapitel: 11. IANA Considerations (IANA-Überlegungen)