Cookies vs localStorage vs sessionStorage: Client Storage

Web2026-09-30TryQuickToolBox

Beim Erstellen einer Webanwendung müssen Sie häufig Daten auf der Client-Seite speichern – sei es die Theme-Einstellung eines Benutzers, ein Warenkorb oder ein Authentifizierungs-Token. Die drei Hauptoptionen sind Cookies, localStorage und sessionStorage. Jede hat unterschiedliche Eigenschaften, die sie für verschiedene Szenarien geeignet machen. Die falsche Wahl kann zu Sicherheitslücken, Leistungsproblemen oder einer schlechten Benutzererfahrung führen.

Dieser Artikel erläutert die Unterschiede, bietet praktische Anleitungen und hilft Ihnen zu entscheiden, welchen Speichermechanismus Sie für Ihr nächstes Projekt verwenden sollten.

Schneller Vergleich

Bevor wir ins Detail gehen, hier ein Überblick über die drei Speichertypen:

Funktion Cookies localStorage sessionStorage
Kapazität ~4KB pro Domain ~5-10MB pro Origin ~5-10MB pro Origin
Persistenz Konfigurierbares Ablaufdatum Bis explizit gelöscht Bis Tab/Fenster geschlossen wird
An Server gesendet Automatisch bei jeder HTTP-Anfrage Nein Nein
Über JavaScript zugänglich Ja (außer HttpOnly) Ja Ja
Geltungsbereich Domain und Pfad Origin (Protokoll + Domain + Port) Origin + Tab/Fenster
Anfällig für XSS Ja (wenn nicht HttpOnly) Ja Ja
Anfällig für CSRF Ja (wenn für Authentifizierung verwendet) Nein Nein

Cookies: Der ursprüngliche Client-Speicher

Cookies gibt es seit den Anfängen des Webs. Sie sind kleine Datenstücke (max. ~4KB), die der Browser speichert und automatisch bei jeder HTTP-Anfrage an dieselbe Domain an den Server sendet.

Wann Cookies verwendet werden sollten

Sicherheitsüberlegungen

Cookies werden automatisch gesendet, was sie anfällig für CSRF macht, wenn sie ohne zusätzliche Schutzmaßnahmen zur Authentifizierung verwendet werden. Setzen Sie immer das SameSite-Attribut (Lax oder Strict) und ziehen Sie die Verwendung von CSRF-Token in Betracht. Verwenden Sie für sensible Daten HttpOnly, um den JavaScript-Zugriff zu verhindern und die Auswirkungen von XSS zu reduzieren.

Beispiel für das Setzen eines sicheren Cookies in einer HTTP-Antwort:

Set-Cookie: sessionId=abc123; HttpOnly; Secure; SameSite=Lax; Path=/; Max-Age=3600

localStorage: Persistenter Key-Value-Speicher

localStorage bietet einen einfachen Key-Value-Speicher, der auch nach dem Schließen des Browsers erhalten bleibt. Die Daten werden pro Origin (Protokoll + Domain + Port) gespeichert und nicht automatisch an den Server gesendet. Es ist ideal für die Speicherung nicht sensibler Daten, die Seitenneuladungen und Browser-Neustarts überstehen sollen.

Wann localStorage verwendet werden sollte

Sicherheitsüberlegungen

localStorage ist über JavaScript zugänglich, sodass jede XSS-Schwachstelle alle gespeicherten Daten offenlegen kann. Speichern Sie niemals sensible Informationen wie Passwörter, persönliche Identifikationsnummern oder Authentifizierungs-Token, es sei denn, Sie haben robuste XSS-Schutzmaßnahmen implementiert. Wenn Sie Token speichern müssen, ziehen Sie stattdessen den HttpOnly-Cookie-Ansatz in Betracht.

Beispiel für die Verwendung von localStorage:

// Benutzereinstellung speichern
localStorage.setItem('theme', 'dark');

// Einstellung abrufen
const theme = localStorage.getItem('theme');

// Element entfernen
localStorage.removeItem('theme');

sessionStorage: Speicher pro Tab

sessionStorage ähnelt localStorage, hat aber eine kürzere Lebensdauer: Die Daten werden gelöscht, wenn der Tab oder das Fenster geschlossen wird. Es ist auf einen einzelnen Tab beschränkt, sodass Daten nicht zwischen Tabs oder Fenstern geteilt werden, auch nicht für dieselbe Origin.

Wann sessionStorage verwendet werden sollte

Sicherheitsüberlegungen

Wie localStorage ist auch sessionStorage anfällig für XSS. Seine begrenzte Lebensdauer und der Geltungsbereich pro Tab verringern jedoch das Zeitfenster für Angreifer. Vermeiden Sie dennoch die Speicherung hochsensibler Daten.

Beispiel für die Verwendung von sessionStorage:

// Formulardaten speichern
sessionStorage.setItem('formStep1', JSON.stringify({name: 'John'}));

// Formulardaten abrufen
const step1 = JSON.parse(sessionStorage.getItem('formStep1'));

Wie wählen: Ein Entscheidungsleitfaden

Verwenden Sie die folgende geordnete Liste, um Ihre Entscheidung zu leiten:

  1. Muss der Server die Daten bei jeder Anfrage lesen? Wenn ja, verwenden Sie Cookies. Beispiel: Sitzungs-IDs.
  2. Müssen die Daten über Browsersitzungen hinweg bestehen bleiben? Wenn ja, verwenden Sie localStorage. Beispiel: Benutzereinstellungen.
  3. Sollen die Daten auf einen einzelnen Tab beschränkt sein? Wenn ja, verwenden Sie sessionStorage. Beispiel: Daten aus mehrstufigen Formularen.
  4. Sind die Daten sensibel? Vermeiden Sie die Speicherung in localStorage oder sessionStorage. Verwenden Sie HttpOnly-Cookies für Token und speichern Sie niemals Passwörter.
  5. Sind die Daten groß? Cookies sind auf ~4KB begrenzt; localStorage und sessionStorage bieten viel mehr Kapazität.

Sicherheits-Best Practices

FAQ

Kann ich localStorage für Authentifizierungs-Token verwenden?

Es wird nicht empfohlen, da localStorage über JavaScript zugänglich ist und Token dadurch anfällig für XSS sind. Bevorzugen Sie HttpOnly-Cookies mit Secure- und SameSite-Flags.

Was passiert mit sessionStorage, wenn ich einen Tab dupliziere?

Wenn Sie einen Tab duplizieren, erhält der neue Tab eine Kopie des sessionStorage des ursprünglichen Tabs zum Zeitpunkt der Duplizierung. Danach sind sie unabhängig.

Werden Cookies bei jeder Anfrage an den Server gesendet?

Ja, Cookies für die aktuelle Domain werden automatisch in jede HTTP-Anfrage aufgenommen, was die Leistung beeinträchtigen kann, wenn Sie zu viele Daten speichern. Verwenden Sie sie sparsam.

Müssen Sie JSON-Daten, die Sie speichern, schnell formatieren oder validieren? Probieren Sie unseren JSON Formatter, um Ihre JSON-Payloads zu verschönern und zu debuggen, bevor Sie sie im Client-Speicher speichern.