2017-12-06 5 views
1

Ich habe einen Nodejs-Server, der über eine REST-API mit HTTP kommuniziert. Ich möchte jetzt das Protokoll der Übertragung aller meiner Anfragen von HTTP zu HTTPS ändern. Das Problem ist, dass ich den Client-Code nicht ändern kann.Es ist sicher, die API-Aufrufe, die mit HTTP an meinen Server gesendet werden, an HTTPS umzuleiten?

Ich würde gerne wissen, ob Umleiten der gesamten HTTP-Anfrage auf dem Server zu https genug ist, um die Daten mit Verschlüsselung gesendet werden. Oder wenn ich den Code modifizieren muss, der auf dem Client läuft und die Anfrage mit HTTP-Protokoll macht.

Ich muss es tun, weil die Daten nicht klar gesendet werden sollten, da einige sensible Daten gesendet werden (Benutzername, Passwort, Positionsinformationen).

Danke.

+0

verwenden Sie Nginx als Reverse-Proxy –

+0

@iambatman ja ich benutze Nginx – Simoyw

Antwort

1

Der Zweck der Verwendung von HTTPS ist nicht nur die Verschlüsselung. Es bietet unter anderem auch die Authentifizierung des Servers für den Client.

Ein Problem mit einem Client, der einfache HTTP-Anfragen stellt (unabhängig davon, ob er umgeleitet wird), ist, dass ein Angreifer einen falschen Server erstellt, mit dem der Client spricht, Geheimnisse preisgibt oder gefälschte Daten zieht. Ohne zunächst über https zu erfolgen, gibt es nichts, was einen Angreifer daran hindern könnte.

Noch schlimmer, ein Angreifer kann den Datenverkehr zum echten Server nur abhören. Wenn ein Man-in-the-Middle-Angriff möglich ist (z. B. der Angreifer befindet sich im selben lokalen Netzwerk wie der Client oder der Server), kann der Angreifer die anfängliche Klartextanforderung entführen und dann über HTTPS mit der API kommunizieren Für alle Anfragen antworten Sie einfach auf http für den Client und so weiter. Aus der Sicht des Kunden funktioniert es "einfach", aus der Sicht des Servers ist es alles gut, auf https.

Dies wird SSL Stripping genannt.

Also die einzige Lösung ist, den Client alle Anfragen (einschließlich der ersten) über https zu tun. Eine Möglichkeit, dies mit Browser-Clients zu gewährleisten, ist die Verwendung des Antwortkopfs Strict-Transport-Security (HSTS). Für Nicht-Browser-Clients können Sie sie implementieren, um entweder HSTS zu erfüllen oder einfach alle Anfragen über https zu stellen.

Verwandte Themen