Ist es sicher, von einem HTTP-Formular an HTTPS zu senden?

73

Ist es akzeptabel, von einem http-Formular über https zu senden? Es scheint sicher zu sein, aber es erlaubt einen Mann im mittleren Angriff ( hier ist eine gute Diskussion ). Es gibt Websites wie mint.com , auf denen Sie sich von einer http-Seite aus anmelden können , aber einen https-Beitrag verfassen . Auf meiner Website besteht die Anforderung darin, eine http-Landingpage zu haben, sich jedoch sicher anmelden zu können. Lohnt sich das mögliche Sicherheitsrisiko nicht und sollte ich alle Benutzer dazu bringen, sich auf einer sicheren Seite anzumelden (oder die Zielseite sicher zu machen)?

Tai im Quadrat
quelle

Antworten:

33

Gibt es einen Grund nicht HTTPS für die gesamte Transaktion zu benutzen? Wenn Sie keinen sehr guten finden können, verwenden Sie ihn!

  • Es ist wohl einfacher als das Wechseln von Protokollen.

  • Das MITM-Risiko ist real.

  • Wenn Sie Ihrem Link folgen, weist der Benutzer "Helios" darauf hin, dass die Verwendung von 100% HTTPS für den Benutzer weitaus weniger verwirrend ist.

Adam Liss
quelle
1
Ich habe in der Vergangenheit aus Leistungsgründen Leute gefunden, die zu dieser Zeit legitim waren. Es ist jedoch eines dieser Probleme, bei denen das Muster als fast dogmatisch gelehrt wurde, obwohl Durchsatz und Leistung auf Servern und Clients jetzt mehr als fähig sind.
Jason Coco
1
Einverstanden. Damals war es auch schwierig, Vektorgrafiken auf einem Abakus zu erstellen. :-)
Adam Liss
In der Tat :) Es ist eines der Dinge, die ich an CS-Programmen nicht mag, sie sind so zurückgeblieben, dass sie diese veralteten Methoden lehren, und dann ist es Teil jeder Religion ... denke Leute, denke! :)
Jason Coco
Veraltet? Sie sollten die 20-Pfund-Widerstände gesehen haben, die wir in meinem EE-Labor verwendet haben! Zumindest hat sich Ohms Gesetz nicht geändert. Noch.
Adam Liss
7
Ich denke, es ist besser für Benutzer, sich daran zu gewöhnen, KEINE Anmeldeinformationen auf einer Seite einzugeben, die nicht HTTPS ist. Wenn ich HTTP sehe und es mich auffordert, mich anzumelden, drücke ich einfach auf Login und sehe, ob es HTTPS geht, dann gebe ich tatsächlich einige Informationen ein.
Bratch
52

Durch das Posten eines Formulars von einer http-Seite auf eine https-Seite werden die Daten im Formular verschlüsselt, wenn sie auf einfachste Weise übertragen werden. Wenn es einen Man-in-the-Middle-Angriff gibt, werden Sie vom Browser gewarnt.

Wenn jedoch das ursprüngliche http-Formular Man-in-the-Middle unterzogen wurde und die https-Post-Back-Adresse vom Angreifer geändert wurde, wird keine Warnung angezeigt. Die Daten werden weiterhin tatsächlich verschlüsselt, aber der Man-in-the-Middle-Angreifer kann sie entschlüsseln (da er Ihnen den Schlüssel zuerst gesendet hat) und die Daten lesen.

Wenn das Formular Dinge auf andere Weise zurücksendet (Skriptverbindungen), besteht möglicherweise die Möglichkeit, dass unverschlüsselte Daten über das Kabel gesendet werden, bevor das Formular veröffentlicht wird (obwohl eine gute Website dies niemals mit sensiblen Daten tun würde). .

Jason Coco
quelle
Endlich eine einfache Antwort
Royi Namir
Ich werde auch hinzufügen, dass HSTS dies löst (nun, bis auf die erste Anfrage)
Royi Namir
16

Diese Art von Dingen taucht überall im Internet auf, insbesondere auf Websites, für die die Anmeldung optional ist. Es ist jedoch aus subtilen Gründen von Natur aus unsicher und gibt dem Benutzer ein falsches Sicherheitsgefühl. Ich denke, es gab kürzlich einen Artikel darüber auf codinghorror.com .

Die Gefahr besteht darin, dass die Seite, auf der dieser Verweis vorkommt , während Sie Ihre Seite mit dem Post-Ziel " https: // xxx " gesendet haben, nicht sicher ist. Daher kann sie während der Übertragung von einem Angreifer so geändert werden, dass sie auf eine beliebige URL des Angreifers verweist wünscht sich. Wenn ich Ihre Website besuche, muss ich die Quelle anzeigen, um zu überprüfen, ob meine Anmeldeinformationen an eine sichere Adresse gesendet werden. Diese Überprüfung ist nur für diese bestimmte Übermittlung relevant . Wenn ich morgen zurückkehre, muss ich die Quelle erneut anzeigen, da diese bestimmte Übermittlung der Seite möglicherweise angegriffen und das Post-Ziel unterlaufen wurde. Wenn ich nicht jedes Mal überprüfe, bis ich weiß, dass das Post-Ziel unterwandert wurde, ist dies der Fall zu spät - Ich habe meine Anmeldeinformationen bereits an die URL des Angreifers gesendet.

Sie sollten nur einen Link zur Anmeldeseite bereitstellen. und die Anmeldeseite und alles danach sollte HTTPS sein, solange Sie angemeldet sind. Und es gibt wirklich keinen Grund, dies nicht zu tun. Die Last von SSL liegt bei den ersten Verhandlungen. Die nachfolgenden Verbindungen verwenden SSL-Sitzungs-Caching, und die für die Verbindungsdaten verwendete symmetrische Krypto ist tatsächlich äußerst kostengünstig.

Lawrence Dol
quelle
10

IE Blog erklärt: Kritischer Fehler Nr. 1: Nicht-HTTPS-Anmeldeseiten (auch wenn sie an eine HTTPS-Seite gesendet werden)

  • Woher weiß der Benutzer, dass das Formular über HTTPS gesendet wird? Die meisten Browser haben keinen solchen UI-Hinweis.
  • Wie konnte der Benutzer wissen, dass die richtige HTTPS-Seite aufgerufen wurde? Wenn das Anmeldeformular über HTTP übermittelt wurde, gibt es keine Garantie dafür, dass es nicht zwischen dem Server und dem Client geändert wurde.
Kornel
quelle
2
Und doch üben sie es nicht selbst.
John Mee
6

Jay und Kiwi haben Recht mit dem MITM-Angriff. Es ist jedoch wichtig zu beachten, dass der Angreifer das Formular nicht brechen und eine Fehlermeldung geben muss. Der Angreifer kann stattdessen JavaScript einfügen, um die Formulardaten zweimal zu senden, einmal an ihn und einmal an Sie.

Aber ehrlich gesagt müssen Sie sich fragen, wie groß die Chance ist, dass ein Angreifer Ihre Anmeldeseite abfängt und sie im Flug ändert. Wie ist es im Vergleich zu dem Risiko, (a) eine MITM-Angriffsstraße in der SSL-Sitzung durchzuführen und zu hoffen, dass der Benutzer "OK" drückt, um fortzufahren; (b) Führen Sie das MITM bei Ihrer ersten Weiterleitung zu SSL (z. B. von http://example.com zu https://example.com ) durch und leiten Sie stattdessen zu https://doma1n.com um , das unter der Kontrolle des Angreifers steht ;; (c) Sie haben irgendwo auf Ihrer Site einen XSS-, XSRF- oder SQL-Injection-Fehler.

Ja, ich würde vorschlagen, das Anmeldeformular unter SSL auszuführen. Es gibt keinen Grund, dies nicht zu tun. Aber ich würde mir nicht viel Sorgen machen, wenn es nicht so wäre, es gibt wahrscheinlich viel niedriger hängende Früchte.

Aktualisieren

Die obige Antwort stammt aus dem Jahr 2008. Seitdem sind viele zusätzliche Bedrohungen erkennbar geworden. Greifen Sie beispielsweise über zufällige, nicht vertrauenswürdige Netzwerke wie WLAN-Hotspots auf Websites zu (an denen möglicherweise jeder in der Nähe diesen Angriff ausführen kann). Jetzt würde ich ja sagen, Sie sollten auf jeden Fall Ihre Anmeldeseite verschlüsseln und Ihre gesamte Website weiterentwickeln. Außerdem gibt es jetzt Lösungen für das anfängliche Umleitungsproblem (HTTP Strict Transport Security). Das Open Web Application Security Project stellt verschiedene Best Practices-Anleitungen zur Verfügung.

derobert
quelle
2
Ja, es gibt wahrscheinlich weniger hängende Früchte. Aber diese Einstellung ist der Grund, warum das Web so unglaublich unsicher ist ... alle da draußen sagen, dass es nicht so wichtig ist ... aber was ist, wenn ein ahnungsloser Benutzer dasselbe Passwort auf Ihrer Website und auf der Website seiner Bank verwendet?
Lawrence Dol
3
"Wie groß ist die Chance, dass ein Angreifer Ihre Anmeldeseite abfängt und sie im Flug ändert?" Es ist keine Frage der Wahrscheinlichkeit, es passiert oder nicht nach Wahl des Angreifers. Und ja, MITM kommt in der Praxis vor. "Es gibt wahrscheinlich viel niedriger hängende Früchte" ist nur das schwächste Argument, das man über irgendetwas machen kann. Können Sie sich wirklich eine schwächere vorstellen, die nicht einfach falsch ist? Außerdem, selbst wenn man sich darauf verlassen kann, dass Ihr Angreifer zuerst die niedrigste Frucht pflückt, was soll er dann dort anhalten?
Marsh Ray
"Zufall" ist definitiv eine schlechte Wortwahl meinerseits. Ich glaube jedoch nicht, dass Sie aufgrund der anderen Angriffsmethoden viel Sicherheit gewinnen. Ein MITM-Angriff kann Ihre Benutzer jeweils für einen Benutzer (oder ISP) gefährden, eine SQL-Injection kann jedoch alle Ihre Anwendungen gleichzeitig gefährden. Ich behaupte, es ist sinnvoll, Ihre Sicherheitszeit dort zu verbringen, wo Sie das Beste für Ihr Geld bekommen, und das sind wahrscheinlich keine SSL- oder Nicht-SSL-Anmeldeseiten.
Derobert
1
Wenn es einen MITM-Angriff gibt, haben Sie größere Probleme. Zunächst einmal könnten sie einfach den Link "Anmelden" ändern, um auf ihre eigene Angriffsseite zu verweisen, oder, noch besser, sie könnten die DNS-Suche abfangen, damit ihre Seite für den Benutzer völlig legitim aussieht. Und bevor Sie sagen "Oh, aber der Browser warnt den Benutzer" - nein, nein, werden sie nicht. Selbst wenn der Benutzer nach gültigen SSL-Zertifikaten sucht, gibt es Möglichkeiten, dies zu umgehen. Ich denke, Ihre einzige Option ist also, den gesamten Handel offline zu betreiben.
Lèse Majesté
2

Dieser Beitrag ist der Schlüssel. Ja, wenn die Daten des Benutzers an Sie gesendet werden, sind sie an einem sicheren Ort angekommen. Es gibt jedoch keinen Grund zu der Annahme, dass irgendwo Ihre Website sein wird. Der Angreifer kann an dieser Stelle nicht nur die Daten abhören, die sich in jede Richtung bewegen. Er ist das andere Ende der Sitzung des Benutzers. Ihre Website wird nur denken, dass der Benutzer sich nie die Mühe gemacht hat, das Formular einzureichen.

Jay Kominek
quelle
2

Für mich (als Endbenutzer) besteht der Wert einer HTTPS-Sitzung nicht nur darin, dass die Daten verschlüsselt sind, sondern dass ich überprüft habe, ob die Seite, auf der ich meine Supergeheimnisse eingebe, von der gewünschten Stelle stammt zu.

Wenn Sie das Formular in einer Nicht-HTTPS-Sitzung haben, wird diese Sicherheit zunichte gemacht.

(Ich weiß - dies ist nur eine andere Art zu sagen, dass das Formular einem MITM-Angriff ausgesetzt ist).

Michael Burr
quelle
1

Nein, es ist nicht sicher, von HTTP zu HTTPS zu wechseln. Die Ursprungs- und Ergebnispunkte der Anforderung müssen HTTPS sein, damit der sichere Kanal eingerichtet und verwendet werden kann.

Kon
quelle
Die Frage war, ob es sicher ist, ein erstes Formular für HTTP bereitzustellen und die Daten über HTTPS zu veröffentlichen. Es ist nicht möglich, die Hälfte einer Übertragung zu wechseln, aber es ist möglich, Elemente auf beiden zu platzieren.
Raymond Martineau
6
+1 Diese Antwort ist absolut richtig. Sie können nicht einmal garantieren, dass das Formular über HTTPS gesendet wird, wenn es über HTTP zugestellt wurde.
Marsh Ray
1

Jeder, der vorschlägt, nur einen Link zur Anmeldeseite bereitzustellen, scheint zu vergessen, dass der Link mithilfe eines MITM-Angriffs leicht geändert werden kann.

RWS
quelle
1
Wenn der Benutzer jedoch dem Link zur (sicheren) Anmeldeseite folgt, kann die SSL-Aushandlung ihn benachrichtigen, wenn Spielereien stattfinden.
Mr. Shiny und New
@Mr Shiny and New: Nur wenn sie sich die URL genau ansehen. Die beste Option ist HTTPS für Ihre gesamte Site.
Bart van Heukelom
1
@Bart van Heukelom: HTTPs auf der gesamten Website funktionieren nur für richtig eingegebene URLs oder richtig gespeicherte Lesezeichen, nicht wahr? Wenn der Benutzer NIEMALS auf die URL (oder irgendwo in der Adressleiste moderner Browser, die eine verbesserte Sichtbarkeit des Hostnamens bietet, mit dem Sie verbunden sind) schaut, ist SSL ziemlich sinnlos.
Mr. Shiny und New
@Mr Shiny and New: Das stimmt, aber die anfängliche Umleitung von HTTP zu HTTPS, insbesondere wenn der Benutzer dann die HTTPS-Version mit einem Lesezeichen versehen, ist für einen Hacker ein kleineres Fenster als jedes Mal, wenn auf den Anmeldelink geklickt wird.
Bart van Heukelom
@Bart: Ja, und der Benutzer kann die HTTPS-Anmeldeseite genauso einfach mit einem Lesezeichen versehen, wie ich es getan habe, nachdem ich überprüft habe, ob die Anmelde-URL korrekt ist. Dies muss ich nur tun, wenn ich sie mit einem Lesezeichen versehen.
Lawrence Dol
1

Eines der größten Dinge, die in all dem übersehen wurden, ist, dass es einen allgemeinen Trend gibt, ein Login auf einer Homepage zu platzieren (großer Trend bei User Experience-Trends).

Das große Problem dabei ist, dass Google nicht gerne aus gutem Grund nach sicheren Seiten sucht. Alle Entwickler, die sich fragen, warum sie nicht alles sicher machen, sollten alles sichern, wenn Sie möchten, dass Ihre Seite für Google unsichtbar ist. Andernfalls ist die zweitbeste Option, um von http auf https zu posten, das geringere von zwei Übeln an dieser Stelle?

Glenn
quelle
1
Nein, die zweitbeste Option ist die Verknüpfung von der HTTP-Site-Seite zur HTTPS-Anmeldeseite.
Lawrence Dol
-2

Ich denke, die Hauptüberlegung dieser Frage hat mit der URL zu tun, die Benutzer kennen, und dem Protokollschema (http :), das Browser standardmäßig ersetzen.

In diesem Fall besteht das normale Verhalten einer Site, die einen verschlüsselten Kanal sicherstellen möchte, darin, dass die http: // Homepage auf die https: // Homepage umgeleitet wird . Es gibt immer noch eine Spoofing / MitM-Möglichkeit, aber wenn es sich um eine DNS-Vergiftung handelt, ist das Risiko nicht höher als wenn man mit der https: URL beginnt. Wenn ein anderer Domainname zurückkommt, müssen Sie sich dann Sorgen machen.

Dies ist wahrscheinlich sicher genug. Wenn Sie einem gezielten MitM unterliegen, können Sie sich auch Gedanken über Tastaturprotokollierer, Ihre lokale HOSTS-Datei und viele andere Möglichkeiten machen, um Informationen über Ihre sicheren Transaktionen zu erhalten, an denen Ihr System bereits beteiligt ist.

orcmid
quelle
1
"Wenn Sie einem gezielten MitM unterliegen, können Sie sich genauso gut Gedanken über Tastaturlogger, Ihre lokale HOSTS-Datei und alle möglichen anderen Möglichkeiten machen, um Informationen über Ihre sicheren Transaktionen zu erhalten, an denen Ihr System bereits beteiligt ist." Und wie ist Ihr System überhaupt in den Besitz gekommen, frage ich mich?
Marsh Ray