Clickjacking-Schutz für Shopware 6
X-Frame-Options per EventSubscriber — Administration mit DENY schützen, Storefront mit SAMEORIGIN absichern, Payment-iFrames berücksichtigen.
Clickjacking-Schutz in Shopware 6
X-Frame-Options schützt vor Clickjacking-Angriffen, bei denen Ihre Seite in einem unsichtbaren iFrame eingebettet wird. X-Frame-Options ist mit 10 von 166 Punkten im Wolf-Agents Web Security Check bewertet. Der moderne Ersatz ist die frame-ancestors Direktive in der Content Security Policy.
In Shopware 6 ist die Konfiguration besonders relevant: Payment-Provider wie PayPal und Stripe betten eigene iFrames ein. Gleichzeitig muss die Administration vor Embedding geschützt werden. Ein kontextabhängiger EventSubscriber löst beide Anforderungen.
Implementierung
Variante A: EventSubscriber mit kontextabhängiger Konfiguration. Variante B: frame-ancestors in der CSP über shopware.yaml.
// SecurityHeaderSubscriber.php — X-Frame-Options
public function onResponse(ResponseEvent $event): void
{
$response = $event->getResponse();
$request = $event->getRequest();
// Administration: Kein Embedding erlaubt
if (str_starts_with($request->getPathInfo(), '/admin')) {
$response->headers->set('X-Frame-Options', 'DENY');
return;
}
// Storefront: Nur Same-Origin Embedding
$response->headers->set('X-Frame-Options', 'SAMEORIGIN');
} # config/packages/shopware.yaml — frame-ancestors (moderner Ersatz)
shopware:
security:
csp_templates:
default:
frame-ancestors: "'none'"
storefront:
frame-ancestors: "'self'"
administration:
frame-ancestors: "'none'" X-Frame-Options betrifft nur das Embedding Ihrer Seite in fremden iFrames. Payment-Provider-iFrames (die auf Ihrer Seite eingebettet sind) werden durch frame-src in der CSP gesteuert — nicht durch X-Frame-Options.
Verifizierung
Prüfen Sie den Header für Storefront und Administration separat.
# Cache leeren
bin/console cache:clear
# X-Frame-Options prüfen
curl -sI https://ihr-shop.de | grep -i x-frame-options
# Erwartete Ausgabe:
# x-frame-options: SAMEORIGIN
curl -sI https://ihr-shop.de/admin | grep -i x-frame-options
# Erwartete Ausgabe (Administration):
# x-frame-options: DENY Häufige Fehler
Payment-iFrame von X-Frame-Options blockiert
X-Frame-Options steuert ob Ihre Seite eingebettet werden darf. Die iFrames der Payment-Provider werden durch CSP frame-src kontrolliert. Verwechseln Sie diese beiden Mechanismen nicht.
DENY blockiert eigene Admin-iFrames
Manche Shopware-Plugins nutzen iFrames innerhalb der Administration. Wenn DENY gesetzt ist, funktionieren diese nicht. Prüfen Sie Ihre Plugin-Kompatibilität oder wechseln Sie auf SAMEORIGIN.
frame-ancestors und X-Frame-Options kollidieren
Wenn sowohl X-Frame-Options als auch CSP frame-ancestors gesetzt sind, hat frame-ancestors Vorrang. Setzen Sie beide Header für maximale Kompatibilität mit älteren Browsern.
Compliance-Relevanz
Wie steht Ihre Domain bei Clickjacking-Schutz?
Prüfen Sie es jetzt — kostenlos, ohne Registrierung, mit 166 Prüfpunkte.