X-Content-Type-Options für Shopware 6

MIME-Sniffing verhindern per EventSubscriber — eine Zeile Code für Schutz vor Upload-Angriffen und Asset-Manipulation.

Shopware · Schritt für Schritt

X-Content-Type-Options in Shopware 6

X-Content-Type-Options: nosniff verhindert, dass Browser den MIME-Typ von Ressourcen erraten (MIME-Sniffing). Ohne diesen Header können hochgeladene Dateien als ausführbare Scripts interpretiert werden. X-Content-Type-Options ist mit 10 von 166 Punkten im Wolf-Agents Web Security Check bewertet.

Für Shopware-Shops mit Produkt-Uploads, Medien-Manager und Plugin-Assets ist dieser Header besonders wichtig. Die Konfiguration erfolgt über einen EventSubscriber — eine einzige Zeile Code mit großer Wirkung.

Implementierung

Variante A (empfohlen): EventSubscriber. Variante B: Nginx für Self-Hosted.

Variante A — EventSubscriber
SecurityHeaderSubscriber.php Empfohlen
// SecurityHeaderSubscriber.php — X-Content-Type-Options
public function onResponse(ResponseEvent $event): void
{
    $response = $event->getResponse();

    // MIME-Sniffing verhindern
    $response->headers->set(
        'X-Content-Type-Options',
        'nosniff'
    );
}
Variante B — Nginx
nginx.conf Server-Level
# Nginx — Alternative für Self-Hosted
add_header X-Content-Type-Options "nosniff" always;
Medien-Manager und Uploads

Shopware erlaubt Produkt-Bilder, PDF-Downloads und andere Medien-Uploads. Ohne nosniff könnte ein als Bild hochgeladenes SVG mit eingebettetem JavaScript vom Browser als Script ausgeführt werden.

Verifizierung

Nach dem Cache-Leeren prüfen Sie den Header.

Terminal Verifizierung
# Cache leeren
bin/console cache:clear

# X-Content-Type-Options prüfen
curl -sI https://ihr-shop.de | grep -i x-content-type-options

# Erwartete Ausgabe:
# x-content-type-options: nosniff

# Auch statische Assets prüfen
curl -sI https://ihr-shop.de/theme/yourtheme/style.css | grep -i x-content-type-options

Häufige Fehler

Header fehlt auf statischen Assets

Wenn Nginx statische Dateien direkt ausliefert, greift der EventSubscriber nicht. Setzen Sie X-Content-Type-Options: nosniff zusätzlich in der Webserver-Konfiguration für das public/-Verzeichnis.

Shopware HTTP Cache liefert gecachte Header

Der HTTP-Cache kann veraltete Header ausliefern. Nach Änderungen: bin/console cache:clear und bin/console http:cache:clear.

CDN-Assets ohne Header

Wenn Sie ein CDN für Assets nutzen, muss der Header auch dort gesetzt sein. Konfigurieren Sie das CDN, den Header vom Origin durchzureichen.

Compliance-Relevanz

X-Content-Type-Options ist eine einfache aber wirksame Maßnahme gegen MIME-Confusion-Angriffe. Besonders für Shopware-Shops mit Datei-Uploads ist der Header ein Pflicht-Baustein in der Sicherheitsarchitektur.

NIS2 Art. 21(e) — Schutz vor MIME-Type-Confusion-Angriffen
BSI APP.3.1 — MIME-Sniffing als bekannter Angriffsvektor verhindern
OWASP ASVS V14.4 — X-Content-Type-Options als Pflicht-Header

Wie steht Ihre Domain bei X-Content-Type-Options?

Prüfen Sie es jetzt — kostenlos, ohne Registrierung, mit 166 Prüfpunkte.