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.

Drupal · Schritt für Schritt

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.

seckit ist der einfachste Weg

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 (empfohlen)
/admin/config/system/seckitEmpfohlen
# seckit: /admin/config/system/seckit → Tab "Various"
 X-Content-Type-Options: nosniff

# Speichern → drush cr
EventSubscriber
SecurityHeadersSubscriber.phpCustom
<?php
// EventSubscriber — X-Content-Type-Options
public function onResponse(ResponseEvent $event) {
  $response = $event->getResponse();
  $response->headers->set(
    'X-Content-Type-Options', 'nosniff');
}
.htaccess
.htaccessFallback
# .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).

TerminalVerifizierung
# 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: nosniff

Hä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.

NIS2Art. 21(e) — Sicherheit bei Entwicklung und Wartung von Informationssystemen
BSIAPP.3.1 — Webserver-Absicherung mit Security Headern

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.