Zum Inhalt springen

Schutz der Cookies

Setzt der Server Cookies mit den Attributen Secure, HttpOnly und SameSite?

Was wir prüfen

Wir lesen die Set-Cookie-Header, mit denen der Server beim Laden der Startseite Cookies setzt, auch bei nachgeladenen Dateien und Hintergrundanfragen. Cookies von fremden Domains lassen wir aus.

  • Secure fehlt bei einem Cookie auf einer HTTPS-Seite: Warnung.
  • HttpOnly fehlt bei einem Cookie, dessen Name auf eine Sitzung, ein Login oder ein Token hindeutet (PHPSESSID, wordpress_logged_in_…, csrf, auth, …): Warnung.
  • SameSite fehlt: Hinweis.

Setzt der Server keine Cookies, gibt es nichts zu bemängeln.

Warum das wichtig ist

Ein Cookie ist ein kleiner Ausweis, den der Browser bei jedem Aufruf mitschickt. Beim Sitzungs-Cookie eines Logins gilt: Wer es hat, ist eingeloggt. Drei Attribute legen fest, wem der Browser diesen Ausweis zeigt.

  • Secure: nur über verschlüsselte Verbindungen. Ohne das Attribut geht das Cookie auch bei einem Aufruf von http://beispiel.ch mit, wo es in einem offenen WLAN mitgelesen werden kann.
  • HttpOnly: nur dem Server, nicht den Skripten der Seite. Gelingt es jemandem, Skriptcode einzuschleusen (Cross-Site-Scripting), kann er das Cookie trotzdem nicht auslesen.
  • SameSite: nicht bei Aufrufen, die von fremden Websites ausgehen. Das verhindert, dass eine andere Seite im Namen eines eingeloggten Besuchers Aktionen auslöst (Cross-Site-Request-Forgery). Browser setzen ohne Angabe meist Lax ein, aber nicht alle gleich.

Keines der Attribute kostet etwas, und sie schliessen ganze Angriffsklassen aus.

So behebst Du es

PHP-Anwendungen

In der php.ini oder in der Anwendung:

session.cookie_secure = 1
session.cookie_httponly = 1
session.cookie_samesite = "Lax"

WordPress

WordPress setzt HttpOnly bei seinen Login-Cookies selbst und Secure, sobald die Site-Adresse mit https:// beginnt. Fehlende Attribute stammen dann meist von einem Plugin oder dem Theme. Hosting-Panels und Sicherheits-Plugins bieten oft einen Schalter für SameSite.

Webserver

Nginx kann Attribute nachträglich ergänzen:

proxy_cookie_flags ~ secure httponly samesite=lax;

Bei Apache übernimmt Header edit Set-Cookie ^(.*)$ "$1; Secure; HttpOnly; SameSite=Lax" dieselbe Aufgabe. Sinnvoller ist aber, die Anwendung selbst richtig einzustellen.

So prüfst Du es selbst

Öffne die Entwicklertools (F12), Reiter «Anwendung» (Chrome) oder «Web-Speicher» (Firefox), und dort «Cookies». Die Spalten «Secure», «HttpOnly» und «SameSite» zeigen die Attribute jedes Cookies.

Häufige Fragen

Was hat das mit dem Cookie-Banner zu tun?

Nichts. Der Banner regelt, ob Statistik- und Werbe-Cookies gesetzt werden dürfen. Hier geht es darum, wie gut die Cookies, die die Website selbst setzt, vor Diebstahl und Missbrauch geschützt sind, etwa das Sitzungs-Cookie eines Logins oder Warenkorbs.

Warum zählen Cookies von Drittanbietern nicht?

Deren Attribute setzt der Anbieter, nicht der Betreiber der Website. Wir bewerten nur Cookies, die von der Domain der Website selbst kommen.

Das Cookie-Tool braucht Zugriff per JavaScript. Ist HttpOnly dann falsch?

Für ein Cookie, das nur die Einwilligung speichert, ist fehlendes HttpOnly unproblematisch. Wir bemängeln es nur bei Cookies, deren Name auf eine Sitzung oder ein Login hindeutet.

Jetzt eine Website prüfen

Wir prüfen «Schutz der Cookies» und alle anderen Punkte in wenigen Minuten, kostenlos und ohne Anmeldung.