2009-06-17 12 views
57

Ist ein POST sicher genug, um Anmeldedaten zu senden?Wie sicher ist ein HTTP-POST?

Oder ist eine SSL-Verbindung ein muss?

+0

vorherige Frage anzeigen (http://stackoverflow.com/questions/1008539/how-secure-is -a-http-get-wenn-die-Daten-ist-url-codiert. –

+7

Hey Matt, bevor Sie fragen, ja, müssen Sie das Login-Passwort, das Sie auf dem Server speichern Hash. – erickson

+1

Ich denke, es ist eine ernste Frage. Schau dir Matts andere Fragen an und du wirst sehen, dass er wahrscheinlich ein Anfänger ist, daher die scheinbar naive Frage. – JohnFx

Antwort

69

SSL ist ein Muss. POST ist nicht sicherer als GET, da es auch unverschlüsselt gesendet wird. SSL deckt die gesamte HTTP-Kommunikation ab und verschlüsselt die HTTP-Daten, die zwischen dem Client und dem Server gesendet werden.

+6

Ein Muss? Für ein My Little Pony Fanforum? Ist ein ptarmigan geschirmtes Endgerät, Quantenverschlüsselung und eine getestete Standleitung ebenfalls erforderlich? –

+12

@mgb: Geleast? Du willst mich wohl veralbern. Wenn Sie das Kupfer nicht ganz besitzen, wie können Sie sicher sein, dass es sicher ist ?! –

+108

Ja, weil Leute das gleiche Passwort für My Little Pony Fan Forum und ihr Bankkonto verwenden. – erickson

5

SSL ist ein

HTTP Post im Klartext übertragen :) muss. Laden Sie beispielsweise Fiddler herunter und verwenden Sie es, um den HTTP-Verkehr zu überwachen. Sie können den gesamten Post einfach darin sehen (oder über einen Netzwerkverkehrsmonitor wie WireShark)

2

Nein ... POST ist nicht sicher genug. SSL ist ein Muss.

POST blendet nur die Parameter in der Abfragezeichenfolge effektiv aus. Diese Parameter können immer noch von jedem abgerufen werden, der den Verkehr zwischen dem Browser und dem Endpunkt betrachtet.

4

Es ist nicht sicher. Ein POST kann genauso einfach wie ein GET geschnüffelt werden.

8

Das hängt von Ihren Umständen ab, wie viel kostet das Abfangen der Anmeldedaten jemanden?

Wenn es sich nur um eine Anmeldung auf einer Software-Q + A-Website handelt, ist SSL möglicherweise nicht erforderlich, wenn es sich um eine Online-Banking-Website handelt oder Sie Kreditkartendaten speichern.
Dies ist ein Geschäft keine technische Entscheidung.

+12

downvoted, weil Leute Kennwörter wiederverwenden. – Malfist

+1

Malfist: Benutzer verwenden Passwörter immer wieder, aber wenn Sie ein zufälliges Passwort abfangen, wissen Sie, wo Sie es sonst verwenden können? – TheTXI

+2

Wenn Sie den Datenverkehr überwachen, um Anmeldedaten abzurufen, können Sie jede Website anzeigen, die der Benutzer besucht. SSL versteckt nicht die Adresse, nur die Daten – Jim

1

POST ist Klartext.

Eine sichere Verbindung ist ein Muss.

Deshalb wird es eine sichere Verbindung genannt.

0

Eine POST-Anfrage ist nicht sicher, weil alle Daten im Klartext "reisen".

Sie benötigen SSL, um es sicher zu machen.

1

Nein, verwenden Sie SSL.

Mit POST werden die Werte weiterhin als Nur-Text gesendet, es sei denn, SSL wird verwendet.

0

POST-Daten werden im Klartext gesendet, wenn Sie eine unverschlüsselte HTTP-Verbindung verwenden. WENN das sicher genug ist, hängt von Ihrer Verwendung ab (Hinweis: es ist nicht).

Wenn sowohl der Server, der Client-Rechner als auch ALLE MASCHINEN, DIE ZWISCHEN DIESEN GERÄTEN ZWISCHEN DIESEM BETRIEB SIND, Teil eines kontrollierten, voll vertrauenswürdigen Netzwerks sind, kann dies in Ordnung sein.

Außerhalb dieser sehr eingeschränkten Umstände (und manchmal sogar in ihnen), fordert die reine Textauthentifizierung Probleme.

1

Der einzige Unterschied zwischen HTTP GET und HTTP POST ist die Art und Weise, in der die Daten codiert sind. In beiden Fällen wird es als Klartext gesendet.

Um jegliche Art von Sicherheit für Anmeldedaten zu gewährleisten, ist HTTPS ein Muss.

Sie benötigen kein teures Zertifikat, um HTTPS bereitzustellen.Es gibt viele Anbieter, die sehr einfache Zertifikate für etwa 20USD ausgeben werden. Zu den teureren gehört die Überprüfung der Identität, die eher für E-Commerce-Websites von Bedeutung ist.

+0

Eddy Niggs [Startcom] (https://www.startcom.org/) wird ein Zertifikat für [free] (https://www.startssl.com/?app=25#90) ausstellen. Ihre Zertifikate werden von [den meisten Browsern] (https://www.startssl.com/?app=40) vertraut. Sie verlangen den Widerruf, weil dort die meisten Kosten liegen. – jww

-3

Hängt davon ab, wo Sie es verwenden und wie sicher Sie wirklich brauchen.

Es gibt keine Möglichkeit für jemanden, die POST-Daten, die Sie von zu Hause aus senden, zu erhalten, es sei denn, Sie verwenden einen Proxy (TOR) oder jemand klopft auf Ihre Leitungen.

Wenn Sie jedoch Bedenken haben, dass sich jemand mit einem unsicheren WLAN-Netzwerk anmeldet, ist SSL wichtig.

Wenn Sie eine Bank sind, können Sie dieses Risiko nicht einmal eingehen. Wenn Sie ein Teacher mit Logins sind, um Zuordnungen zu sehen, dann sollten Sie in Ordnung sein

+0

Entschuldigung für -1, aber wie könnte es "keine Möglichkeit für jemanden" sein, die Daten zwischen Zuhause und einem Server zu sehen? –

+0

Bitte erläutern. Dieser Beitrag wird von meinem Heimcomputer an SO gesendet. Selbst wenn Sie - Ilya - meine IP-Adressen (und SOs) wüssten, könnten Sie die Daten, die ich an SO gesendet habe, immer noch nicht abfangen. Du kannst nicht wissen, was da ist, außer du kannst es abfangen. [Und oft, wenn Sie es abfangen können, wird eine SSL-Verbindung nicht helfen.] Wenn Sie glauben, dass dies ein Fehler ist, beweisen Sie es. – SamGoody

+1

@SamGoody Dies zeigt die völlige Unkenntnis darüber, was ein Man-in-the-Middle-Angriff ist und wie SSL dies verhindert. Ich weiß, dass dies ein alter Kommentar ist und möglicherweise nicht mehr Ihr aktuelles Verständnis widerspiegelt. Wenn dies der Fall ist, sollten Sie ihn entfernen und diese Antwort löschen, da beide völlig falsch sind. – meagar

6

HTTP POST ist nicht verschlüsselt, es kann durch einen Netzwerk-Sniffer, durch einen Proxy abgefangen werden oder in den Protokollen des Servers mit einem benutzerdefinierten durchgesickert Protokollierungsstufe. Ja, POST ist besser als GET, da POST-Daten nicht sind, die von einem Proxy oder Server protokolliert werden, aber es ist nicht sicher. Um ein Passwort oder andere vertrauliche Daten zu sichern, müssen Sie vor dem POST SSL verwenden oder die Daten verschlüsseln. Eine andere Option wäre die Verwendung der Digestauthentifizierung mit dem Browser (siehe RFC 2617). Denken Sie daran, dass die (hausgewachsene) Verschlüsselung nicht ausreicht, um Replay-Angriffe zu verhindern. Sie müssen vor dem Verschlüsseln ein Nonce und andere Daten (zB Realm) verketten (siehe RFC 2617, wie es in Digest Auth geschieht).

+0

+1 für die Unterschiede in der Protokollierung notieren –

2

Der sicherste Weg ist, keine Zugangsdaten zu senden. Wenn Sie Digest Authentication verwenden, dann ist SSL ein Muss.

(Hinweis: Ich unterstelle nicht, dass die Digest-Authentifizierung über HTTP immer sicherer ist als die Verwendung von POST über HTTPS).

36

<shameless plug> Ich habe eine blog post, die detailliert, wie eine HTTP-Anfrage aussieht und wie eine GET-Anfrage mit einer POST-Anfrage vergleicht. Aus Gründen der Kürze, GET:

GET /?page=123 HTTP/1.1 CRLF 
Host: jasonmbaker.wordpress.com CRLF 
User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; en-us) AppleWebKit/525.27.1 (KHTML, like Gecko) Version/3.2.1 Safari/525.27.1 CRLF 
Connection: close CRLF 

und POST:

POST/HTTP/1.1 CRLF 
Host: jasonmbaker.wordpress.com CRLF 
User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; en-us) AppleWebKit/525.27.1 (KHTML, like Gecko) Version/3.2.1 Safari/525.27.1 CRLF 
Connection: close CRLF 
CRLF 
page=123 

(Die CRLF ist nur ein Newline)

Wie Sie, sind die einzigen Unterschiede im Hinblick auf die, wie eine Anforderung sehen gebildet * ist, dass eine POST-Anfrage das Wort POST verwendet und die Formulardaten im Body der Anfrage gegen die URI gesendet werden. Daher ist die Verwendung von HTTP POST Sicherheit durch Dunkelheit. Wenn Sie Daten schützen möchten, sollten Sie SSL verwenden.

* Beachten Sie, dass dort are other differences.

+6

+1 Für eine Visualisierung, warum POST nicht mehr sicher ist. –

+15

Sie haben Ihr schamloses Plug-Tag nicht geschlossen, kompilieren Sie den Fehler – Blundell

+18

@Blundell Sie kompilieren Ihre XML? – dimo414