This page is available in English. Switch to English

Zum Inhalt springen
E-Commerce Audit

5 Sicherheits-Header, die jeder Online-Shop braucht (und warum 97 % mindestens einen davon nicht haben)

Security headers audit — shield icon over a network diagram

Ich habe 37 Tiroler Online-Shops auf grundlegende Sicherheits-Header geprüft. Im Schnitt fehlten 4 von 7 kritischen Schutzmaßnahmen. Zwei Shops hatten gar keine.

Ein Shop hatte seine .env-Datei öffentlich zugänglich. HTTP 200, von jedem Browser herunterladbar. Diese Datei enthält in der Regel Datenbankpasswörter, API-Keys und Verschlüsselungsschlüssel. Das ist kein ausgeklügelter Angriff. Es ist das digitale Äquivalent eines offen stehenden Tresors mit dem Schild „Passwörter hier drin."

Was sind Sicherheits-Header?

Sicherheits-Header sind Anweisungen, die eine Website an den Browser des Besuchers sendet. Sie teilen dem Browser mit: Tür abschließen, nichts von unbekannten Adressen laden, diese Seite nicht in einer fremden Website einbetten lassen.

Ein paar Zeilen Konfiguration. Schutz vor ganzen Kategorien von Angriffen. Und die große Mehrheit der Shops hat sie schlicht nicht.

Das hat der Audit von 37 Tiroler Magento-Shops ergeben.

Die 7 Header und was ohne sie passiert

Strict-Transport-Security (HSTS) erzwingt ausschließlich HTTPS-Verbindungen. Ohne ihn kann jemand im gleichen öffentlichen WLAN, im Café oder im Hotel, die Verbindung zwischen Kunden und Shop abfangen, inklusive Login-Daten und Session-Tokens. Bei 81 % der Shops fehlend.

Content-Security-Policy (CSP) kontrolliert, welche Skripte auf einer Seite ausgeführt werden dürfen. Ohne ihn kann ein Angreifer, der irgendeine Schwachstelle findet, beliebigen Code einschleusen: Kreditkarten-Skimmer, Zahlungsumleitungen, Malware. So funktionieren Magecart-Angriffe, und sie treffen E-Commerce-Shops seit Jahren. Bei 73 % der Shops fehlend.

X-Frame-Options verhindert, dass eine Website in einem unsichtbaren Frame auf einer anderen Seite geladen wird. Ohne ihn können Angreifer gefälschte Schaltflächen über dem echten Checkout einblenden, eine Technik namens Clickjacking. Jemand klickt auf das, was wie „Jetzt kaufen" aussieht, und sendet die Zahlung woanders hin. Nur 11 % der Shops hatten diesen Header nicht, das beste Ergebnis im Audit.

X-Content-Type-Options verhindert, dass Browser Dateitypen erraten. Ohne ihn könnte eine Datei, die wie ein Bild aussieht, als JavaScript ausgeführt werden, wenn der Browser das so interpretiert. Bei 16 % der Shops fehlend.

Referrer-Policy steuert, welche URL-Informationen weitergegeben werden, wenn Kunden auf externe Links klicken. Ohne sie werden URLs von Bestellbestätigungsseiten, internen Suchanfragen und Kundenkonten als Referrer-Daten an jedes externe Skript auf der Seite gesendet: Analytics-Anbieter, Werbenetzwerke, Drittanbieter-Tools. Die Aktivitäten der Kunden werden für Stellen sichtbar, für die sie nie bestimmt waren. Bei 92 % der Shops fehlend.

Permissions-Policy steuert, auf welche Browser-Funktionen Skripte auf der Website zugreifen dürfen: Kamera, Mikrofon, Standort, Zahlungs-APIs. Ohne ihn können über eine beliebige Schwachstelle eingeschleuste Skripte Zugriff auf Gerätefunktionen anfordern. Bei 97 % der Shops fehlend. Schlechtestes Ergebnis im Audit.

X-XSS-Protection ist ein älterer Header, der den eingebauten Cross-Site-Scripting-Filter des Browsers aktiviert. Moderne Browser haben sich davon weitgehend verabschiedet, in älteren bietet er aber noch eine zusätzliche Schutzebene. Bei 19 % der Shops fehlend.

Das Gesamtbild

97 % mit mindestens einem fehlenden kritischen Header ist eine eindrucksvolle Zahl, aber die Verteilung erzählt die eigentliche Geschichte.

Sieben Shops fehlten 5 oder mehr von 7 Headern. Zwei hatten alle 7 nicht, keinerlei Schutz. Von den drei Magento-1-Shops, die ich gefunden habe (Software, die seit 2020 kein EOL mehr hat, hier im Detail beschrieben), hatte einer alle 7 Header nicht gesetzt und dazu ein ungeschütztes Admin-Panel.

Die Shops, die bei den Headern gut abschnitten, haben nichts Außergewöhnliches getan. Sie hatten einfach eine Server-Konfiguration, über die sich irgendwann einmal jemand Gedanken gemacht hatte.

So prüft man den eigenen Shop

Der schnellste Weg: Browser öffnen, den eigenen Shop aufrufen, F12 drücken, auf den Tab „Netzwerk" klicken, die Seite neu laden, den ersten Eintrag in der Liste anklicken und im Bereich „Antwortheader" nachschauen. Die oben genannten Header sollten dort zu finden sein.

Schneller geht es mit securityheaders.com: Einfach die Domain eingeben und eine Bewertung mit einer genauen Auflistung der fehlenden Header erhalten.

Eine F- oder D-Bewertung wäre, basierend auf dem, was wir gefunden haben, keine Ausnahme. Und sie muss es nicht bleiben.

Wie man es behebt

Für die meisten Shops ist das Hinzufügen von Sicherheits-Headern eine reine Konfigurationsänderung. Ein paar Zeilen in der .htaccess-Datei (Apache) oder in der nginx-Konfiguration. Kein Entwicklungs-Sprint, keine Plattformmigration notwendig. Bei Magento können Header auch über die Server-Konfiguration oder ein Modul gesetzt werden.

Der Haken: Die Werte müssen stimmen. CSP ist besonders leicht falsch zu konfigurieren und kann dann die eigene Seite kaputt machen; das ist eher ein Projekt als eine Einzeiler-Lösung. Aber HSTS, X-Frame-Options, X-Content-Type-Options, Referrer-Policy und Permissions-Policy sind unkompliziert.

Die .env-Geschichte

Zu dem Shop mit der öffentlich zugänglichen .env-Datei: Diese Datei darf schlicht nicht über HTTP ausgeliefert werden. Sie sollte auf Server-Ebene geblockt sein. Wenn das nicht der Fall ist, erhält jeder, der sie anfordert, den Inhalt zurück: Datenbank-Hostname, Benutzername, Passwort, API-Zugangsdaten, Verschlüsselungsschlüssel.

Mit dieser Datei hat ein Angreifer alles, um direkt auf die Datenbank zuzugreifen, die Authentifizierung zu umgehen und jeden Kundendatensatz im System abzugreifen.

Es war eine 2.078 Byte große Datei. In Millisekunden herunterladbar.

Das ist kein Magento-spezifisches Problem; es betrifft jede PHP-Anwendung, bei der der Webserver nicht entsprechend konfiguriert ist. Aber es ist ein guter Hinweis darauf, dass Sicherheits-Header nur ein Teil eines größeren Bildes sind. Das Ziel ist nicht, sieben Kästchen abzuhaken, sondern die Lücken zu schließen, die Angreifer tatsächlich nutzen.


securityheaders.com liefert die Bewertung in unter einer Minute. Wer einen umfassenderen Blick möchte, der auch häufige Fehlkonfigurationen jenseits der Header umfasst, kann mich gerne ansprechen.

Der nächste Artikel betrachtet, was derselbe Audit auf der Performance-Seite ergeben hat, und warum die meisten Magento-Shops in Tirol Conversion-Rate verschenken.

E-Commerce Magento Österreich Sicherheit Web-Sicherheit