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.chmit, 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
Laxein, 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.
Verwandte Themen
-
Schutz-Einstellungen des Servers
Sendet der Webserver die wichtigsten Security-Header, und sind sie wirksam eingestellt?
-
Verschlüsselte Verbindung (HTTPS)
Wird die Website verschlüsselt ausgeliefert, und leitet die unverschlüsselte Adresse auf HTTPS weiter?
-
Unverschlüsselte Inhalte auf HTTPS-Seiten
Lädt die verschlüsselte Seite Skripte, Bilder oder Formulare über unverschlüsseltes HTTP nach?
-
Drittanbieter vor Zustimmung
Überträgt die Startseite schon beim ersten Aufruf Daten an Tracking-Dienste und andere Drittanbieter?