Skip to content

Sind per HTTP POST gesendete Daten verborgen oder sicherer als per GET?

Kurzantwort

Nein. POST trägt die Parameter einfach im Anfrage-Body statt in der URL; dieser Body ist Klartext und für jeden, der den Verkehr sieht, voll sichtbar, sofern kein HTTPS genutzt wird. POST ist vorzuziehen für zustandsändernde Aktionen und hält Parameter aus URLs, Logs und Verlauf heraus, bietet aber für sich keine Vertraulichkeit. Der Irrtum verwechselt „nicht in der URL” mit „verschlüsselt” — nur TLS verschlüsselt die Daten beider Methoden bei der Übertragung.

Erstaunlich viele Entwickler glauben, POST „verberge” Daten. Es verschlüsselt nichts. Zu verstehen, warum, prüft sauber, ob jemand den Unterschied zwischen Transport und Verschlüsselung begreift.

Warum die populäre Antwort falsch ist

Auf dem Draht sieht eine POST-Anfrage so aus: Anfragezeile, Header, eine Leerzeile, dann der Body mit deinen Parametern — als lesbarer Text. Eine GET-Anfrage legt diese Parameter stattdessen in die Query-Zeichenkette der URL. In beiden Fällen liest, wenn die Verbindung einfaches HTTP ist, jeder, der den Verkehr beobachtet — ein Netzwerk-Sniffer, ein bösartiger WLAN-Hotspot, ein transparenter Proxy — die Werte direkt. POST ändert, wo die Daten liegen, nicht, ob sie verschlüsselt sind. Die Behauptung, POST sei „verschlüsselt” oder seine Parameter seien „vor Proxys geheim”, weil sie nicht geloggt werden, ist schlicht falsch; ein Proxy, der die Verbindung terminiert oder inspiziert, sieht den ganzen Body.

Was POST dir wirklich bringt

POST hat echte Vorteile, nur keine Vertraulichkeit. Da die Parameter nicht in der URL stehen, landen sie nicht im Browserverlauf, in den Zugriffslogs des Servers, in Lesezeichen oder im an Dritte gesendeten Referer-Header — alles Orte, an denen eine GET-Query lecken kann. POST ist außerdem die richtige Methode für zustandsändernde Aktionen (es gilt weder als sicher noch als idempotent) und vermeidet URL-Längengrenzen. Gute Gründe, es zu nutzen, aber Fragen von Hygiene und Semantik, nicht von Kryptografie.

Die echte Lösung: TLS

Das Einzige, was eine der beiden Anfragen vertraulich macht, ist HTTPS / TLS, das die gesamte Anfrage — Methode, Header, URL und Body — zwischen Browser und Server verschlüsselt. Unter TLS sind sowohl GET- als auch POST-Bodys vor Lauschern auf dem Pfad geschützt. Selbst dann bevorzuge POST für Geheimnisse, denn eine URL aus einer GET-Anfrage kann nach der Entschlüsselung weiterhin in Logs und Verlauf auftauchen. Die interviewreife Zusammenfassung: POST holt die Daten aus der URL; TLS macht sie geheim. Beides zu verwechseln ist der Haken.

Wahrscheinliche Anschlussfragen

  • Was verschlüsselt den POST-Body bei der Übertragung tatsächlich, und auf welcher Schicht?
  • Warum bleibt ein Passwort in einer GET-Query auch über HTTPS eine schlechte Idee?
  • Wo können GET-Parameter lecken, wo POST-Parameter es meist nicht tun?

Quellen

Zertifizierungen

Erhalte 100 Cybersecurity-Interviewfragen + Antworten

Gib deine E-Mail-Adresse ein und wir senden dir das kostenlose PDF-Paket und das Flashcard-Deck.

Kein Spam. Jederzeit abbestellbar.