X-Content-Type-Options in Drupal konfigurieren
MIME-Sniffing in Drupal verhindern — per seckit-Checkbox, EventSubscriber oder .htaccess. Eine einzige Zeile Konfiguration für mehr Sicherheit.
X-Content-Type-Options in Drupal
X-Content-Type-Options: nosniff verhindert, dass Browser den MIME-Typ einer Ressource erraten (MIME-Sniffing). Ohne diesen Header kann ein Angreifer eine HTML-Datei als Bild tarnen und ausführbaren Code einschleusen. Der Header hat nur einen gültigen Wert: nosniff. Er bringt 10 von 166 Punkten im Wolf-Agents Web Security Check.
In Drupal ist dies die einfachste Konfiguration überhaupt — eine Checkbox in seckit genügt. Alternativ nutzen Sie den EventSubscriber oder die .htaccess.
Der Wolf-Agents Web Security Check prüft den X-Content-Type-Options-Header auf allen Seiten und meldet, wenn der Header fehlt oder einen falschen Wert hat. Dieser Header ist einer der einfachsten Wege, die Scan-Bewertung Ihrer Drupal-Installation zu verbessern.
Implementierung
Eine Checkbox in seckit, eine Zeile im EventSubscriber oder eine Zeile in der .htaccess — alle drei Wege setzen denselben Header.
Installieren Sie seckit per composer require drupal/seckit und aktivieren Sie das Modul per drush en seckit. Unter /admin/config/system/seckit finden Sie die Checkbox für X-Content-Type-Options. Vergessen Sie nicht, nach dem Speichern drush cr auszuführen.
# seckit: /admin/config/system/seckit → Tab "Various"
✓ X-Content-Type-Options: nosniff
# Speichern → drush cr<?php
// EventSubscriber — X-Content-Type-Options
public function onResponse(ResponseEvent $event) {
$response = $event->getResponse();
$response->headers->set(
'X-Content-Type-Options', 'nosniff');
}# .htaccess — X-Content-Type-Options
<IfModule mod_headers.c>
Header always set X-Content-Type-Options "nosniff"
</IfModule>Verifizierung
Cache mit drush cr leeren und Header per curl prüfen. Die erwartete Ausgabe ist x-content-type-options: nosniff. Prüfen Sie auch, dass der Header nicht doppelt erscheint (z.B. durch gleichzeitige seckit- und .htaccess-Konfiguration).
# Cache leeren und Header prüfen
drush cr
curl -sI https://ihre-domain.de | grep -i x-content-type-options
# Erwartete Ausgabe:
# x-content-type-options: nosniffHäufige Fehler
X-Content-Type-Options hat nur einen Wert, aber die Drupal-Umgebung kann dennoch Probleme verursachen — besonders bei Datei-Uploads, dem JSON:API-Modul und Webfont-Dateien mit fehlenden MIME-Types. Prüfen Sie nach der Aktivierung alle Dateitypen einzeln in den Browser DevTools.
drush cr vergessen
Nach seckit-Änderungen ist ein drush cr zwingend. Ohne Cache Rebuild liefert Drupal den alten Header aus dem Internal Page Cache.
Falsche Content-Type-Header bei Uploads
Wenn Drupal Dateien mit falschem Content-Type ausliefert (z.B. application/octet-stream statt application/pdf), wird die Datei vom Browser blockiert. Prüfen Sie die MIME-Type-Konfiguration in Drupals File-System-Einstellungen.
CDN überschreibt den Header
Einige CDNs entfernen oder überschreiben X-Content-Type-Options. Prüfen Sie den Header nach dem CDN, nicht nur am Origin-Server.
JSON-API liefert falschen Content-Type
Drupals JSON:API-Modul liefert application/vnd.api+json. Mit nosniff muss dieser Content-Type exakt stimmen — ein generisches application/json reicht nicht. Prüfen Sie API-Responses auf korrekte MIME-Types.
Compliance-Relevanz
X-Content-Type-Options verhindert MIME-Type-basierte Angriffe und ist ein Grundbestandteil jeder Security-Header-Konfiguration.
Zusammenfassung
X-Content-Type-Options ist der einfachste Security Header in Drupal: Eine Checkbox in seckit, eine Zeile im EventSubscriber oder eine Zeile in der .htaccess. Der Header verhindert MIME-Sniffing-basierte Angriffe und bringt 10 von 166 Punkten im Wolf-Agents Web Security Check.
Kombinieren Sie diesen Header mit den anderen Security Headern
aus diesem Ratgeber für eine umfassende Drupal-Absicherung.
Prüfen Sie nach jeder Änderung mit drush cr und
curl -sI, ob der Header korrekt gesetzt ist.
Wie steht Ihre Domain bei X-Content-Type-Options?
Prüfen Sie es jetzt — kostenlos, ohne Registrierung, mit 166 Prüfpunkte.