web-dev-qa-db-de.com

Wie sicher ist ein HTTP-POST?

Ist ein POST sicher genug, um Anmeldeinformationen zu senden?

Oder ist eine SSL-Verbindung ein muss ?

64
Matt

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

74
Gumbo

<shameless plug>I habe einen blog post , der beschreibt, wie eine HTTP-Anfrage aussieht und wie eine GET-Anfrage mit einer POST -Anfrage verglichen wird. Der Kürze halber erhalten Sie 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 eine neue Zeile)

Wie Sie sehen können, besteht der einzige Unterschied in der Frage, wie eine Anfrage gebildet wird * darin, dass eine POST - Anfrage das Wort POST verwendet und die Formulardaten im Hauptteil der Anfrage gegen den URI gesendet werden . Daher ist die Verwendung von HTTP POST Sicherheit durch Unkenntlichkeit. Wenn Sie Daten schützen möchten, sollten Sie SSL verwenden.

* Beachten Sie, dass es sind andere Unterschiede .

39
Jason Baker

Das hängt von Ihren Umständen ab, wie viel würde das Abfangen der Zeugnisse jemanden kosten?

Wenn es sich nur um eine Anmeldung bei einer Software-Q + A-Site handelt, ist SSL möglicherweise nicht erforderlich. Wenn es sich um eine Online-Banking-Site handelt oder Sie Kreditkartendaten speichern, ist dies der Fall.
Dies ist keine geschäftliche Entscheidung.

8
Martin Beckett

HTTP POST ist nicht verschlüsselt. Es kann von einem Netzwerk-Sniffer, einem Proxy abgefangen oder in den Protokollen des Servers mit einer benutzerdefinierten Protokollierungsstufe durchgesickert werden. Ja, POST ist besser als GET, da POST -Daten nicht normalerweise von einem Proxy oder Server protokolliert werden, aber nicht sicher. Um ein Passwort oder andere vertrauliche Daten zu sichern, müssen Sie SSL verwenden oder die Daten verschlüsseln, bevor Sie den POST-Vorgang starten. Eine andere Option wäre die Verwendung der Digest-Authentifizierung mit dem Browser (siehe RFC 2617). Denken Sie daran, dass (selbstgewachsene) Verschlüsselung nicht ausreicht, um Wiederholungsangriffe zu verhindern. Sie müssen vor dem Verschlüsseln eine Nonce und andere Daten (z. B. Realm) verketten.

6
user124546

SSL ist ein Muss :)

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

5
Ken Pespisa

Es ist nicht sicher. Ein POST kann genauso einfach entdeckt werden wie ein GET.

4
driis

Nein ... POST ist überhaupt nicht sicher genug. SSL ist ein MUSS.

Der POST verbirgt nur effektiv die Parameter in der Abfragezeichenfolge. Diese Parameter können immer noch von jedem abgefragt werden, der den Datenverkehr zwischen dem Browser und dem Endpunkt betrachtet.

2
Justin Niessner

Der sicherste Weg ist, keine Anmeldeinformationen zu senden.

Wenn Sie Digest Authentication verwenden, ist SSL NICHT ein Muss.

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

2
ykaganovich

POST ist Klartext.

Eine sichere Verbindung ist ein Muss.

Deshalb nennt man es eine sichere Verbindung.

1
yfeldblum

Nein, verwenden Sie SSL.

Mit POST werden die Werte weiterhin als reiner Text übermittelt, sofern nicht SSL verwendet wird.

1
Dana Holt

Der einzige Unterschied zwischen HTTP GET und HTTP POST ist die Art und Weise, wie die Daten codiert werden. In beiden Fällen wird es als Nur-Text gesendet.

HTTPS ist ein Muss, um jede Art von Sicherheit für Anmeldeinformationen zu gewährleisten.

Sie benötigen kein teures Zertifikat, um HTTPS bereitzustellen. Es gibt viele Anbieter, die sehr einfache Zertifikate für etwa 20 USD ausstellen werden. Zu den teureren gehören die Identitätsüberprüfung, die bei E-Commerce-Websites ein größeres Problem darstellt.

1
tadman

Bitte sehen Sie diesen großartigen Artikel:

Schutz vor bösartigen POST -Anfragen

https://perishablepress.com/protect-post-requests/

0
SandroMarques

Eine Anforderung POST allein ist nicht sicher, da alle Daten im Klartext "reisen".

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

0
rogeriopvl

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

Wenn sowohl der Server als auch der Client-Computer und ALLE MASCHINEN ZWISCHEN SIE Teil eines kontrollierten, vollständig vertrauenswürdigen Netzwerks sind, kann dies in Ordnung sein. 

Außerhalb dieser sehr begrenzten Umstände (und manchmal sogar innerhalb von ihnen) fordert die reine Textauthentifizierung Probleme.

0
cmason