Sind Websockets sicher oder nicht?

Lesezeit: 4 Minuten

Wikipedia scheint zu schließen websockets sind sicher:

Für die Unterstützung von Webbrowsern ist eine sichere Version des WebSocket-Protokolls in Firefox 6 (mit dem Namen MozWebSocket) implementiert.[2] Google Chrome 14[3] und Entwicklervorschau für Internet Explorer 10. … Obwohl es keine bekannten Exploits gibt, wurde es in Firefox 4 und 5 deaktiviert …

aber w3 gibt an, unsicher zu sein:

Das Befolgen von HTTP-Prozeduren hier könnte ernsthafte Sicherheitsprobleme in einem Webbrowser-Kontext hervorrufen. Stellen Sie sich beispielsweise einen Host mit einem WebSocket-Server an einem Pfad und einem offenen HTTP-Redirector an einem anderen vor. Plötzlich kann jedes Skript, dem eine bestimmte WebSocket-URL gegeben werden kann, dazu verleitet werden, mit jedem Host im Internet zu kommunizieren (und möglicherweise Geheimnisse mit ihm zu teilen), selbst wenn das Skript überprüft, ob die URL den richtigen Hostnamen hat.

  1. sind http websockets (ws:) sicher oder nicht?

  2. sind https websockets (wss:) sicher oder nicht?

  3. Wenn nicht Nr. 2, gibt es dokumentierte prophylaktische Maßnahmen?

  • WebSockets erben wie jede andere Form der Kommunikation die Sicherheitsprobleme im Zusammenhang mit Klartexttransaktionen (Vertraulichkeit und Integrität).

    – Adi

    21. Juni 2012 um 6:51 Uhr

  • Aye – definiere „sicher“. So sicher wie HTTPS, wenn Sie HTTPS verwenden? Jap. Ähm, solange nichts schief geht.

    – Chris Baker

    21. Juni 2012 um 7:07 Uhr

  • Ich fürchte, nichts ist sicher. Definiere “sicher”

    – kbec

    21. Juni 2012 um 7:40 Uhr

  • Eh…. wenn der Teilnehmer am anderen Ende der Dose ist aktiv gegen dich arbeiten Dagegen kann man mit keiner Steckdose etwas machen. Kommunikation 101.

    – Jon

    21. Juni 2012 um 7:40 Uhr

Benutzer-Avatar
Kanaka

Es gibt viele verschiedene Aspekte der WebSocket-Sicherheit.

Der von Ihnen zitierte Ausschnitt aus Wikipedia bezieht sich auf die Maskierung von WebSocket-Client-zu-Server-Daten. Dies soll verhindern, dass Vermittler (z. B. Proxys und Caches), die sich schlecht verhalten, versehentlich WebSocket-Datenverkehr als normalen HTTP-Datenverkehr interpretieren. Hier besteht die Gefahr, dass das WebSockets-Protokoll verwendet werden könnte, um den Caching-Vermittler zu vergiften. Ich sollte jedoch anmerken, dass dies ein rein theoretisches Anliegen war, aber es war besorgniserregend genug, dass Mozilla und Opera zögerten, die Hixie- und frühen HyBi-Versionen des WebSocket-Protokolls auszuliefern. Daher beschloss die IETF, die Client-zu-Server-Maskierung der Daten hinzuzufügen, um die Bedenken auszuräumen.

Abgesehen davon ist die IETF für das WebSocket-Protokoll (IETF 6455) verantwortlich, während das W3C für die HTML5-WebSocket-API (das Javascript-Objekt, Methoden und Ereignisse) verantwortlich ist.

Ein weiterer Aspekt der WebSocket-Sicherheit ist die Cross-Origin-Sicherheit. Der zweite Ausschnitt, den Sie aus der W3C-WebSocket-API-Spezifikation zitiert haben, bezieht sich auf Cross-Origin-Sicherheit. WebSockets unterstützen ursprungsübergreifende Verbindungen (zu einem anderen Host, von dem die HTML-Seite bereitgestellt wurde). Das sagt diese Warnung wenn normale HTTP-Cross-Origin-Verfahren für WebSockets verwendet wurden, würde dies eine riesige Sicherheitslücke aufreißen. Das WebSocket-Verfahren unterscheidet sich jedoch genau aus diesem Grund. Zum einen sind der WebSocket-Handshake und die Antwort so konzipiert, dass keine WebSocket-Verbindungen zu einem HTTP-Server hergestellt werden können, der keine WebSocket-Verbindungen unterstützt: Der Server muss einen Schlüssel auf WebSocket-spezifische Weise signieren/hashen und dies in der Handshake-Antwort zurückgeben. Der zweite Teil ist, dass der Browser als Teil des Handshakes einen Origin-Header senden muss (dies zeigt an, woher das HTML/Javascript ursprünglich geladen wurde). Dadurch kann der Server auswählen, welche Domänen zugelassen werden stammen WebSocket-Verbindungen.

Schließlich gibt es zwei WebSocket-Verbindungsmodi: unverschlüsselt (ws://) und verschlüsselt (wss://). Der verschlüsselte Modus verwendet TLS/SSL-Verschlüsselung, um alle Daten zu verschlüsseln, die zum und vom Server gesendet werden (einschließlich anfänglichem Handshake und Antwort). Dies ist derselbe Verschlüsselungsmechanismus, der für HTTPS-Verbindungen verwendet wird (und dieselbe Verschlüsselungs-Engine im Browser verwendet). Dadurch wird verhindert, dass Dritte die übertragenen Daten ausspionieren.

Es gibt eigentlich nur zwei wissenswerte Versionen des WebSocket-Protokolls:

  • Hixie76: Diese Version des Protokolls fügte ursprungsübergreifende Sicherheit und Header-Hashing/Signatur hinzu. Aufgrund der Art und Weise, wie das Protokoll entwickelt wurde, ist es jedoch schwierig, Unterstützung dafür zu bestehenden Webservern hinzuzufügen. Dies ist die Version, die derzeit in iOS unterstützt wird (hoffentlich wird iOS 6 endlich auf IETF 6455 aktualisiert)

  • IETF6455: Dies ist die Version des WebSocket-Protokolls, die von der IETF im vergangenen November (Nov 2011) standardisiert wurde. Es war der Höhepunkt der Arbeit der IETF-HyBi-Arbeitsgruppe (Iterationen des Protokolls, die dazu führten, wurden als HyBi XX bezeichnet). Dies ist die Version, die von aktuellen Versionen von Chrome und Firefox sowie von IE 10 und bald von Opera unterstützt wird.

  • Update für die heutige Zeit: iOS unterstützt jetzt IETF 6455: stackoverflow.com/a/10411901/4714742

    – Jon McClung

    15. April 2019 um 20:38 Uhr

Benutzer-Avatar
Denis Ibaev

Version hixie-76 des WebSocket-Protokolls ist sicherer als frühere Versionen, und Version hybi-07 ist sogar noch sicherer. Bei Hixie-76-Version hinzugefügt Schutz vor gefälschten Anfragen. Bei hybi-07 wird die Version hinzugefügt Nachrichtenmaskierung.

  • tolle Infos! sind diese derzeit eingeklappt websockets wie zum Beispiel von Chrome und Firefox implementiert?

    – cc jung

    21. Juni 2012 um 8:22 Uhr

  • Sehen Stand der Umsetzung bei Wikipedia.

    – Denis Ibaev

    21. Juni 2012 um 9:00 Uhr

  • macht Sinn. der rfc6455 ist sozusagen eine anhäufung der vorgängerversionen. Danke noch einmal!

    – cc jung

    21. Juni 2012 um 9:29 Uhr

1283140cookie-checkSind Websockets sicher oder nicht?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy