# Security Headers: Sicherheits-Header und CSP für PrestaShop 8 und 9

> DataFirefly Security Headers sendet die HTTP-Sicherheits-Header aus PrestaShop 8 und 9: Content-Security-Policy, HSTS, X-Frame-Options, X-Content-Type-Options, Referrer-Policy, Permissions-Policy und Cross-Origin-Opener-Policy. Das Modul wird unter Erweiterte Einstellungen > Sicherheits-Header eingerichtet, gegliedert in…

- Seite: <https://www.datafirefly.com/de/documentation/dfsecurityheaders/>
- Sprache: de
- Aktualisiert am: 2026-09-30
- Weitere Sprachen: [fr](https://www.datafirefly.com/documentation/dfsecurityheaders/index.md), [en](https://www.datafirefly.com/en/documentation/dfsecurityheaders/index.md), [es](https://www.datafirefly.com/es/documentation/dfsecurityheaders/index.md), [it](https://www.datafirefly.com/it/documentation/dfsecurityheaders/index.md), [pl](https://www.datafirefly.com/pl/documentation/dfsecurityheaders/index.md), [nl](https://www.datafirefly.com/nl/documentation/dfsecurityheaders/index.md), [pt](https://www.datafirefly.com/pt/documentation/dfsecurityheaders/index.md)
- Index: <https://www.datafirefly.com/de/documentation/llms.txt>

DataFirefly Security Headers sendet die HTTP-Sicherheits-Header aus PrestaShop 8 und 9: Content-Security-Policy, HSTS, X-Frame-Options, X-Content-Type-Options, Referrer-Policy, Permissions-Policy und Cross-Origin-Opener-Policy. Das Modul wird unter **Erweiterte Einstellungen > Sicherheits-Header** eingerichtet, gegliedert in sechs Reiter: Übersicht, Allgemein und Testmodus, Content-Security-Policy, HSTS und weitere Header, Permissions-Policy und CSP-Verstöße.

## Installation

1. Klicken Sie unter **Module > Modul-Manager** auf **Modul hochladen** und senden Sie die ZIP-Datei.
2. Das Modul wird im Testmodus installiert, mit der CSP im Report-Only-Modus und aktiver Erfassung der Verstöße: Kein Besucher wird blockiert.
3. Öffnen Sie **Erweiterte Einstellungen > Sicherheits-Header**. Der Link Konfigurieren im Modul-Manager führt an dieselbe Stelle.

## Livegang Schritt für Schritt

Die Checkliste **Livegang** in der Übersicht folgt diesen Schritten und zeigt ihren Stand an.

1. **Testgeräte festlegen.** Reiter Allgemein und Testmodus: Klicken Sie auf **Meine IP-Adresse hinzufügen**, oder kopieren Sie den Testlink und öffnen Sie ihn auf dem Smartphone.
2. **Genutzte Dienste ankreuzen** im Reiter Content-Security-Policy, Block Drittanbieterdienste.
3. **Den Shop durchklicken** von einem Testgerät aus: Startseite, Kategorie, Produktseite, Warenkorb, Bestellvorgang bis zur Zahlung, Kundenkonto. Verstöße erscheinen nach wenigen Minuten im Reiter CSP-Verstöße.
4. **Verstöße bearbeiten**: legitime Quellen erlauben, die übrigen ignorieren.
5. **Die CSP auf Erzwingen umstellen**, sobald 24 Stunden lang kein neuer Verstoß auftaucht.
6. **Auf Produktionsvorschau klicken**, um die Note ohne Testmodus zu sehen, und dann **den Testmodus deaktivieren**.
7. **Mit einem öffentlichen Scanner prüfen**, etwa securityheaders.com oder Mozilla Observatory, nachdem Sie den CDN-Cache geleert haben, falls Sie einen nutzen.

## Der Testmodus

Solange der Testmodus aktiv ist, wird jede Anfrage auf eine dieser Arten behandelt:

- **Testgeräte** (IP aus der Liste oder Browser, der den Testlink geöffnet hat): alle Header, CSP unabhängig vom gewählten Modus erzwungen, HSTS auf 5 Minuten begrenzt und ohne preload.
- **Andere Besucher**: nur die CSP im Report-Only-Modus, sofern die Erfassung der Verstöße aktiv ist. Nichts wird blockiert, aber ihre Browser melden, was blockiert würde.

Nach dem Deaktivieren des Testmodus erhalten alle Besucher die vollständige Konfiguration.

Die IP-Liste nimmt IPv4- und IPv6-Adressen sowie CIDR-Bereiche an, eine pro Zeile. Der **Testlink** markiert den Browser, der ihn öffnet, für 24 Stunden als Testgerät, praktisch für ein Smartphone im Mobilfunknetz mit wechselnder IP. Öffnen Sie dieselbe Adresse mit `?dfsh_test=off`, um früher aufzuhören. **Neuen Link erstellen** macht frühere Links ungültig.

Die Option **Im Backoffice anwenden** sendet HSTS, X-Frame-Options mit SAMEORIGIN, X-Content-Type-Options und Referrer-Policy im Backoffice. CSP und Permissions-Policy werden dort nie angewendet.

## Content-Security-Policy

### Direktiven

Jede Direktive nimmt Quellen an, getrennt durch Leerzeichen oder Zeilenumbrüche: Schlüsselwörter (`'self'`, `'none'`, `'unsafe-inline'`, `'unsafe-eval'`), Hosts (`https://www.example.com`, `*.example.com`), Schemata (`data:`, `https:`), Nonces und Hashes. Fehlende Anführungszeichen um Schlüsselwörter werden ergänzt. Ein ungültiger Wert wird verworfen und beim Speichern gemeldet. Eine leere Fetch-Direktive fällt auf `default-src` zurück; andere leere Direktiven werden nicht gesendet.

### Drittanbieterdienste

Jeder angekreuzte Dienst fügt seine Domains den benötigten Direktiven hinzu, ohne Ihre eigenen Einträge zu ändern: Google Analytics 4 und Tag Manager, Google Ads, Google Fonts, reCAPTCHA, Google Maps, YouTube, Vimeo, Meta Pixel, TikTok, Pinterest, Stripe, PayPal, Mollie, Cookiebot, Axeptio, Hotjar, Microsoft Clarity, Trustpilot und Crisp. Anbieter ändern ihre Domains gelegentlich: Prüfen Sie nach dem Aktivieren eines Dienstes den Reiter der Verstöße.

### Optionen

- **Medienserver einbeziehen**: fügt die unter Erweiterte Einstellungen > Leistung festgelegten Server den Direktiven für Bilder, Skripte, Styles, Schriften und Medien hinzu.
- **Unsichere Anfragen hochstufen**: sendet `upgrade-insecure-requests` im Modus Erzwingen, bei einem Shop mit https.
- **Von der CSP ausgenommene URLs**: ein URL-Fragment pro Zeile. Die CSP wird nicht gesendet, wenn die angeforderte Adresse eines davon enthält, etwa eine widerspenstige Zahlungsrückkehrseite.

## Nonce und die Note A+

Die Standardkonfiguration behält `'unsafe-inline'` in `script-src`, da PrestaShop-Themes Inline-Skripte verwenden. Scanner begrenzen die Note dann auf A. Für A+:

1. Aktivieren Sie im Block **Strikte CSP mit Nonce** die Option **Nonce zu Skripten hinzufügen**, bei aktivem Testmodus.
2. Das Modul erzeugt auf jeder Seite einen zufälligen Nonce, fügt ihn allen ``-Tags hinzu und entfernt `'unsafe-inline'` aus `script-src`.
3. Klicken Sie sich durch den Shop und bearbeiten Sie die Verstöße. Skripte, die später per JavaScript ohne Nonce eingefügt werden, erscheinen im Protokoll, zum Beispiel benutzerdefinierte HTML-Tags in Google Tag Manager, die die Nonce-Variable von GTM verwenden müssen.
4. Sobald das Protokoll keinen `eval`-Verstoß mehr zeigt, entfernen Sie `'unsafe-eval'` aus `script-src`.

Die Option **Inline-Event-Handler beibehalten** fügt `script-src-attr 'unsafe-inline'` hinzu, damit `onclick`-Attribute weiter funktionieren. Lassen Sie sie aktiv, außer Ihr Theme und Ihre Module verwenden keine; manche öffentlichen Scanner melden sie.

Ein Full-Page-Cache-Modul speichert das HTML mit dem Nonce des ersten Besuchers, der für alle weiteren nicht mehr passt. Nehmen Sie diese Seiten vom Cache aus oder lassen Sie den Nonce deaktiviert. Der native Cache von PrestaShop ist nicht betroffen.

Für Entwickler: Der Nonce der Seite steht in Smarty als `{$dfsh_nonce}` und in PHP über `DfSecurityHeaders::getNonce()` zur Verfügung. Er wird den script-Tags der HTML-Ausgabe automatisch hinzugefügt; diese Zugriffe dienen für Code, der außerhalb dieser Ausgabe erzeugt wird.

## Verstoßprotokoll

Die Berichte der Browser werden nach Direktive und blockierter Quelle gruppiert, mit Anzahl der Treffer, Datum der letzten Meldung, einer Beispielseite und bei Inline-Code dessen ersten Zeichen. Browsererweiterungen werden ignoriert. URLs werden ohne Parameter gespeichert, IP-Adressen werden nicht aufbewahrt.

- **Erlauben** fügt die Quelle der betroffenen Direktive hinzu. War die Direktive leer, übernimmt sie zuerst die Quellen von `default-src`.
- **Ignorieren** entfernt die Zeile, ohne die CSP zu ändern.
- Mit den Kontrollkästchen können Sie die **Auswahl erlauben** oder die **Auswahl ignorieren**. Die Direktiven-Schaltflächen und das Suchfeld filtern die Liste.

Das Erlauben eines `inline`- oder `eval`-Verstoßes fügt `'unsafe-inline'` oder `'unsafe-eval'` hinzu und schwächt die Richtlinie: Besser ist es, das Skript in eine Datei zu verschieben. Bei aktivem Nonce lassen sich Inline-Skripte ohne Nonce nicht automatisch erlauben. Verstöße, die 30 Tage lang nicht auftreten, werden automatisch gelöscht.

## HSTS und weitere Header

- **HSTS**: Dauer von 5 Minuten bis 2 Jahren, standardmäßig 1 Jahr. Browser merken sich den Header für die gesamte Dauer und verweigern http. `includeSubDomains` erzwingt https auf allen Subdomains: Nur aktivieren, wenn alle es unterstützen. `preload` wird nur mit `includeSubDomains` und mindestens 1 Jahr gesendet; melden Sie die Domain nur bei hstspreload.org an, wenn Sie sicher sind, das Entfernen dauert Monate.
- **X-Frame-Options**: SAMEORIGIN wird empfohlen; DENY blockiert auch Iframes Ihres eigenen Shops.
- **X-Content-Type-Options**: sendet `nosniff`.
- **Referrer-Policy**: standardmäßig `strict-origin-when-cross-origin`.
- **Cross-Origin-Opener-Policy**: standardmäßig aus; `same-origin-allow-popups` hält die Zahlungsfenster von PayPal funktionsfähig.
- **X-Powered-By-Header entfernen** verbirgt die PHP-Version, die manche Server preisgeben.

## Permissions-Policy

Für jede der 19 Funktionen: **Blockiert** deaktiviert sie überall, **Nur diese Website** erlaubt sie auf Ihrer Domain und den eingetragenen zusätzlichen Ursprüngen, **Alle Websites** gibt sie frei, **Nicht gesetzt** behält das Verhalten des Browsers. Funktionen, die ein Shop nicht braucht (Kamera, Mikrofon, Standort, Sensoren, USB...), sind standardmäßig blockiert, und `payment` ist auf die Website beschränkt. Der Dienst Stripe fügt seinen eigenen Ursprung zu `payment` hinzu.

## Scanner und Note

**Aktuelle Header analysieren** ruft eine Shopseite vom Server aus ab und zeigt die Note, die Details je Header, preisgegebene Informationen und die rohen Header. Nur die Domains des Shops lassen sich analysieren. **Produktionsvorschau** simuliert die Konfiguration ohne Testmodus. Die Note folgt derselben Gewichtung wie öffentliche Scanner und ist ein Richtwert. Die letzte Analyse und der Notenverlauf bleiben nach dem Neuladen sichtbar.

## Blockierungs-Benachrichtigungen

Aktivieren Sie im Reiter Allgemein und Testmodus die **E-Mail-Benachrichtigungen** und tragen Sie bis zu 5 Empfänger ein. Wird die CSP erzwungen und ist der Testmodus aus, löst jede tatsächlich blockierte Ressource, die noch nie gesehen wurde, eine E-Mail mit Direktive, Quelle und Seite aus. Neue Einträge werden gebündelt, höchstens eine E-Mail pro Stunde. **Test-E-Mail senden** prüft die Einrichtung; kommt nichts an, prüfen Sie Erweiterte Einstellungen > E-Mail.

## Verlauf, Export und Import

Jede Änderung bewahrt die vorherigen Einstellungen mit Datum, Mitarbeiter und den Unterschieden zum aktuellen Stand. Die letzten 15 Versionen bleiben erhalten; **Wiederherstellen** kehrt zu einer davon zurück, und der ersetzte Stand kommt in den Verlauf.

**Einstellungen herunterladen** erzeugt eine JSON-Datei ohne die geheimen Tokens, die sich in einen anderen Shop importieren lässt, etwa von Staging nach Produktion. Ein Import aktiviert immer den Testmodus. Die Test-IP-Adressen werden mit importiert: Prüfen Sie sie.

## Cache, CDN und Server-Header

- Ein CDN oder Seiten-Cache kann alte Header ausliefern: Leeren Sie ihn nach jeder Änderung.
- Setzt Ihr Hoster oder Cloudflare bereits Header, meldet der Scanner die Doppelungen. Entfernen Sie sie auf dem Server oder deaktivieren Sie den Header im Modul.
- Um die Header vom Server setzen zu lassen, kopieren Sie den Apache- oder Nginx-Block aus der Übersicht und deaktivieren Sie das Modul. Die Meldung der Verstöße und der Nonce, die vom Modul abhängen, sind nicht enthalten.

## Wenn etwas nicht funktioniert

- **Eine Seite funktioniert nicht mehr**: Stellen Sie die vorherige Version aus dem Verlauf wieder her, oder setzen Sie die CSP bis zur Korrektur wieder auf Report-Only.
- **Alles abschalten**: Deaktivieren Sie **Sicherheits-Header senden** im Reiter Allgemein oder das Modul selbst.
- **HSTS**: Ein Browser, der HSTS erhalten hat, verweigert http bis zum Ablauf der Dauer, auch nach Deaktivierung des Moduls. Deshalb erhalten Testgeräte nur 5 Minuten.
