Was ist Cookie (HTTP-Cookie)?

Kleine Daten aus Name-Wert-Paaren, die ein Webserver den Browser mit dem Header Set-Cookie speichern lässt. Der Browser hängt sie danach bei Anfragen an dieselbe Website automatisch im Header Cookie an. Cookies enthalten oft eine Sitzungs-ID, damit über das zustandslose HTTP ein Anmeldezustand gehalten werden kann. Attribute wie Secure (nur über HTTPS senden), HttpOnly (für Skripte unlesbar machen), SameSite (ob es an von anderen Websites ausgehende Anfragen angehängt wird) und Expires/Max-Age (Ablaufzeit) legen fest, wie es behandelt wird.

Japanische Bezeichnung: Cookie

„Cookie (HTTP-Cookie)“ kommt in 6 Übungsfragen aus 2 Themen vor, z. B. Grundlagen der Webtechnologien, Grundlagen der Informationssicherheit.

Fachgebiet: Grundlagen der Webtechnologien

Funktionsweise

Der Server fügt einer Antwort einen Header wie „Set-Cookie: sid=…“ hinzu, und der Browser speichert ihn. Danach hängt der Browser bei Anfragen an dieselbe Website (den durch die Attribute Domain und Path festgelegten Bereich) automatisch „Cookie: sid=…“ an. Anhand der empfangenen Sitzungs-ID sucht der Server die auf seiner Seite gespeicherten Nutzerinformationen. Ein Cookie ohne angegebene Ablaufzeit wird im Allgemeinen beim Schließen des Browsers gelöscht.

Attribute für die Sicherheit

Mit Secure wird das Cookie nur über HTTPS gesendet, sodass sein Wert nicht durch Abhören bekannt werden kann. Mit HttpOnly kann das JavaScript der Seite es nicht lesen, was den Schaden verringert, wenn sonst eine Sitzungs-ID über XSS gestohlen würde. SameSite legt mit Strict, Lax oder None fest, ob das Cookie an Anfragen angehängt wird, die von anderen Websites ausgehen; es ist eine der Gegenmaßnahmen gegen Angriffe, die einen Nutzer unbeabsichtigte Anfragen senden lassen.

Unterschied zu localStorage

Auch localStorage speichert Daten im Browser, doch werden sie nicht automatisch an Anfragen angehängt; JavaScript liest und schreibt sie. Ein Cookie ist mit im Allgemeinen höchstens etwa 4 KB klein und wird bei jeder Anfrage an seine Website mitgesendet, sodass große Daten in Cookies den Datenverkehr erhöhen. Authentifizierungsdaten wie eine Sitzungs-ID legt man im Allgemeinen in einem HttpOnly-Cookie ab, das Skripte nicht lesen können.

Jetzt üben: Fragen zu Cookie (HTTP-Cookie)

Welche Aussage über einen Unterschied zwischen localStorage im Browser und Cookies ist richtig?

  1. ADaten in localStorage werden nicht automatisch an Anfragen angehängt; das JavaScript von Seiten desselben Ursprungs liest und schreibt sie
  2. BAuch Daten in localStorage werden wie Cookies bei jeder Anfrage an dieselbe Website in einen Header gesetzt und automatisch an den Server gesendet
  3. CAuch localStorage lässt sich mit dem Attribut HttpOnly versehen; selbst wenn dort eine Sitzungs-ID liegt, können die Skripte der Seite sie nicht lesen
Antwort und Erläuterung anzeigen

Antwort: A. Daten in localStorage werden nicht automatisch an Anfragen angehängt; das JavaScript von Seiten desselben Ursprungs liest und schreibt sie

localStorage ist ein Speicherbereich im Browser, der je Ursprung Schlüssel und Werte als Zeichenketten speichert; eine Ablaufzeit lässt sich nicht festlegen, und die Daten bleiben im Allgemeinen erhalten, bis sie gelöscht werden. Sie werden nicht automatisch an den Server gesendet; soll das geschehen, setzt JavaScript sie in eine Anfrage. Cookies sind mit im Allgemeinen höchstens etwa 4 KB pro Cookie klein und werden bei jeder Anfrage automatisch gesendet, während localStorage größere Datenmengen aufnehmen kann. Allerdings kann das JavaScript der Seite es jederzeit lesen, sodass bei einer XSS-Lücke sein Inhalt gestohlen werden kann. Wer dort Werte für die Authentifizierung ablegt, muss dieses Risiko bedenken.

Häufige Fragen

Was passiert, wenn Cookies deaktiviert sind?

Sitzungs-IDs können nicht mehr übergeben werden, sodass viele Websites den Anmeldezustand nicht halten können. Auch Informationen, die in Cookies gespeichert sind, etwa der Inhalt eines Warenkorbs oder Anzeigeeinstellungen, bleiben nicht erhalten.

Was sind Third-Party-Cookies?

Das sind Cookies, die eine andere Website als die gerade angezeigte Seite setzt, etwa eine Website, die Werbung ausliefert. Weil sie verwendet wurden, um das Verhalten von Nutzern über viele Websites hinweg zu verfolgen, senden manche Browser sie zum Schutz der Privatsphäre standardmäßig nicht oder schränken sie ein.

„Cookie (HTTP-Cookie)“ in den Erläuterungen

Fragen mit „Cookie (HTTP-Cookie)“ (6)

  1. Welche Aussage über das durch den obigen Header gesetzte Cookie ist richtig?
  2. Welche Aussage über einen Unterschied zwischen localStorage im Browser und Cookies ist richtig?
  3. HTTP ist ein zustandsloses Protokoll. Welche Aussage darüber, was das bedeutet, und über den üblichen Weg, wie eine Website einen Nutzer angemeldet hält, ist richtig?
  4. Eine Webanwendung für ein Forum hatte eine Schwachstelle, durch die Skripte in von Nutzern geposteten Texten in den Browsern anderer Besucher ausgeführt wurden. Welche Kombination aus Name dieser Schwachstelle und grundlegender Gegenmaßnahme ist richtig?
  5. Eine Webanwendung hat eine Schwachstelle: Öffnet ein angemeldeter Nutzer eine vom Angreifer präparierte Fallenseite, sendet sein Browser vom Nutzer nicht beabsichtigte Anfragen an die legitime Website, etwa Überweisungen oder Einstellungsänderungen. Welche Gegenmaßnahme ist angemessen?
  6. Verwendet eine Webanwendung vor und nach der Anmeldung weiterhin dieselbe Sitzungs-ID, kann ein Angreifer den Nutzer dazu bringen, eine vom Angreifer vorbereitete Sitzungs-ID zu verwenden, und sich nach der Anmeldung des Nutzers mit dieser ID als dieser ausgeben. Was ist die angemessenste Gegenmaßnahme gegen diesen Angriff?

Verwandte Begriffe

Cross-Site-Scripting (XSS) HTTP (Hypertext Transfer Protocol) CORS (Cross-Origin Resource Sharing) DOM (Document Object Model) Event Loop HTTP-Methode HTTP-Statuscode JSON (JavaScript Object Notation) JWT (JSON Web Token) OAuth

Zur Glossarübersicht