2016-07-19 12 views
0

Ich entwickle ein Backend für eine mobile Anwendung, die Node.js verwendet, um HTTPS-Anfragen zu bearbeiten. Ich habe ein SSL eingerichtet, um eine Verbindung vom Client zum Server herzustellen, und habe mich gefragt, ob dies sicher genug ist.Sichere HTTPS-Verbindung zum Node.js-Server vom Client

Ich habe keine Erfahrung mit dem Abfangen von Endpunkten von den mobilen Geräten, aber ich habe gesehen, dass es für Menschen möglich ist, Internetverkehr von ihren Mobiltelefonen zu überwachen und Endpunkte zu Serveranforderungen abzurufen. Ich habe Hacks auf Zunder gesehen, wo Leute Antwort JSON sehen und sogar Swipes automatisieren können, indem sie http Anfragen an Endpunkte von Zunder senden.

Meine wirkliche Sorge ist, dass Leute Daten auf meinem Backend aktualisieren/lesen/ändern können. Ich kann OAuth2 auch in mein Schema implementieren, aber ich sehe immer noch Fälle, in denen Leute das System missbrauchen könnten.

Meine Hauptfrage ist, ob die Verwendung von HTTPS sicher genug ist, um meine Daten zu schützen, oder ob ein Sitzungsauthentifizierungssystem wie OAuth2 benötigt wird.

Danke.

Antwort

0

HTTPS stellt sicher, dass die Nachricht nicht gelesen oder geändert wurde und dass der Client den Server, mit dem er kommuniziert, nicht als Fälschung kennt.

Es wird den Transport sichern. Es wird die Anwendung nicht sichern.

Zum Beispiel vorausgesetzt, Sie haben eine App, mit der Sie eine Nachricht senden können sagen https://www.example.com/transfermoney?from=Kyle&to=BazzaDP&amount=9999.99 und der Server tut genau das auf der Grundlage dieser Parameter. Dann könnte ich diese Nachricht selbst senden - ich brauche keine App-Nachrichten abzufangen.

Normalerweise benötigt der Server Authentifizierung sowie HTTPS, um zum Beispiel zu überprüfen, nur Kyle Benutzer kann oben Nachricht und sonst niemand senden. HTTPS gibt normalerweise nur die Serverauthentifizierung und nicht die Clientauthentifizierung (es sei denn, es wird das Zweiwegezertifikat HTTPS verwendet).

Die Frage ist also, auch wenn ein Angreifer keine Nachrichten zwischen App und Server lesen oder ändern kann, können sie dennoch Schaden anrichten? Das ist das Maß dafür, ob es sicher genug ist.

+0

Cool das ist hilfreich. Was passiert, wenn der Hauptteil der HTTP-Anfrage ausgeblendet ist? Zum Beispiel würde die URL https://www.example.com/transfermoney heißen, aber der Body würde Werte wie FROM enthalten: Kyle TO: BazzaDP. – Kyle

+0

Egal. Es ist sehr einfach, eine Nachricht wie diese zu konstruieren. Kinder spielen für jeden mit etwas Computererfahrung. Plugins existieren beispielsweise für Chrome (z. B. Advanced REST Client). Es ist eine Schlüsselregel der Sicherheit, Benutzereingaben nicht zu vertrauen und sie zu verifizieren (z. B. zu überprüfen, ob die angemeldete Person berechtigt ist, von Kyle aus eine Sitzungs-ID zu senden, ist nicht leicht zu fälschen). –

+0

Ok danke für diese Erklärung. Ich habe viele Fragen beantwortet, die ich über die Sicherheit einer node.js-App hatte. – Kyle

-1

Eine SSL-Verbindung ist nur sicher mit dem Inhalt, den Sie senden.

SSL verschlüsselt und sichert die Authentizität der gesamten Verbindung, einschließlich der gewünschten Methode und URL

Also würde ich sagen, nur die SSL-Verschlüsselung wird speichern Daten zwischen übertragen - ich könnte OAuth2 für Passwort betrachten usw.

Aber ich würde empfehlen, für den Abruf Daten zu verwenden, GET und POST für autorisierte Daten

+0

Hinweis, dass die gesamte URL wahrscheinlich vom Server protokolliert wird, daher sollte nichts sensibler in der Query-Zeichenfolge enthalten sein. – zaph

+0

Also sagen wir, ich mache eine POST-Anfrage, um einen User Bio String zu aktualisieren. Ich sollte all diese Informationen durch den HTTPS-Tunnel im Hauptteil der Postanforderung weitergeben. Der Körper wird die user_id und die Bio enthalten. Gibt es keine Möglichkeit, dass ein Mann in der Mitte diese HTTPS-Anfrage sehen kann, die Bio-Zeichenkette ändert und die https-Anfrage an mich sendet? Ist das im Wesentlichen der Schutz des HTTPS? – Kyle

+0

Nicht, wenn es durch SSL verschlüsselt ist – Sjuften

0

Sie bauen einen gepanzerten Tunnel zwischen zwei offenen Feldern.

Angenommen, Sie verwenden die aktuellen SSL-Protokolle und -Einstellungen sowie gültige Zertifikate vertrauenswürdiger Aussteller, können Sie davon ausgehen, dass das Netzwerk in Ordnung ist.

Es ist jedoch immer noch möglich, einige oder alle Ihrer Transaktionen vom Client zu kompromittieren. Die Sicherheit hängt wirklich vom Gerät ab und davon, wie gut es konfiguriert und gepatcht ist.