X-Content-Type-Options für IIS konfigurieren
Schritt-für-Schritt-Anleitung: MIME-Sniffing in IIS verhindern — nosniff Header, korrekte staticContent-Konfiguration und PowerShell-Automatisierung.
X-Content-Type-Options in IIS
X-Content-Type-Options: nosniff verhindert, dass Browser den MIME-Type von Ressourcen erraten (Content-Type-Sniffing). Mit 10 von 166 Punkten im Wolf-Agents Web Security Check ist der Header einfach zu setzen und verhindert MIME-Confusion-Attacken.
IIS hat eine Besonderheit: staticContent in der web.config definiert, welche MIME-Types für Dateiendungen gesendet werden. Wenn eine Dateiendung nicht registriert ist, sendet IIS den Typ application/octet-stream — was Browser zum Sniffing verleitet. Daher ist die Kombination aus nosniff-Header und korrekter MIME-Type-Konfiguration entscheidend.
Besonders moderne Dateiformate wie .woff2, .webp, .avif und .webmanifest sind in älteren IIS-Versionen nicht registriert. Ohne korrekte MIME-Types blockiert der Browser diese Ressourcen bei aktivem nosniff.
nosniff Header und MIME-Types konfigurieren
Setzen Sie den nosniff-Header und stellen Sie gleichzeitig sicher, dass alle Dateiendungen korrekte MIME-Types haben. Die remove-Elemente vor jedem mimeMap vermeiden Duplikate bei mehrfachem Deployment.
<!-- web.config — X-Content-Type-Options + MIME-Types -->
<configuration>
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="X-Content-Type-Options"
value="nosniff" />
</customHeaders>
</httpProtocol>
<!-- Korrekte MIME-Types sicherstellen -->
<staticContent>
<remove fileExtension=".js" />
<mimeMap fileExtension=".js"
mimeType="text/javascript" />
<remove fileExtension=".json" />
<mimeMap fileExtension=".json"
mimeType="application/json" />
<remove fileExtension=".svg" />
<mimeMap fileExtension=".svg"
mimeType="image/svg+xml" />
<remove fileExtension=".woff2" />
<mimeMap fileExtension=".woff2"
mimeType="font/woff2" />
<remove fileExtension=".webp" />
<mimeMap fileExtension=".webp"
mimeType="image/webp" />
<remove fileExtension=".avif" />
<mimeMap fileExtension=".avif"
mimeType="image/avif" />
<remove fileExtension=".webmanifest" />
<mimeMap fileExtension=".webmanifest"
mimeType="application/manifest+json" />
</staticContent>
</system.webServer>
</configuration> PowerShell-Automatisierung
Für automatisierte Deployments oder Windows Server Core nutzen Sie PowerShell. Das Script setzt den Header, entfernt bestehende MIME-Type-Eintraege (falls vorhanden) und fuegt die korrekten Eintraege hinzu — idempotent und sicher für wiederholte Ausführung.
# PowerShell — X-Content-Type-Options + MIME-Types
$sitePath = 'MACHINE/WEBROOT/APPHOST/Default Web Site'
# nosniff Header setzen
Add-WebConfigurationProperty -pspath $sitePath \
-filter "system.webServer/httpProtocol/customHeaders" \
-name "." -value @{
name = 'X-Content-Type-Options'
value = 'nosniff'
}
# Moderne MIME-Types registrieren
$mimeTypes = @(
@{ext='.woff2'; type='font/woff2'},
@{ext='.webp'; type='image/webp'},
@{ext='.avif'; type='image/avif'},
@{ext='.webmanifest'; type='application/manifest+json'}
)
foreach ($m in $mimeTypes) {
# Bestehenden Eintrag entfernen (falls vorhanden)
Remove-WebConfigurationProperty -pspath $sitePath \
-filter "system.webServer/staticContent" \
-name "." -AtElement @{
fileExtension = $m.ext
} -ErrorAction SilentlyContinue
# Neuen Eintrag hinzufügen
Add-WebConfigurationProperty -pspath $sitePath \
-filter "system.webServer/staticContent" \
-name "." -value @{
fileExtension = $m.ext
mimeType = $m.type
}
}
Write-Host "MIME-Types und nosniff konfiguriert." IIS Manager GUI-Konfiguration
Alternativ können Sie Header und MIME-Types über den IIS Manager konfigurieren. Diese Methode ist ideal für Administratoren, die eine grafische Oberflaeche bevorzugen, oder für Shared-Hosting-Umgebungen ohne PowerShell-Zugriff.
# IIS Manager GUI — Schritt-für-Schritt
#
# 1. IIS Manager öffnen (inetmgr)
# 2. Website auswaehlen
# 3. "HTTP Response Headers" doppelklicken
# 4. Rechtsklick → "Add..." klicken
# Name: X-Content-Type-Options
# Value: nosniff
# 5. OK klicken
#
# MIME-Types hinzufügen:
# 1. Website auswaehlen
# 2. "MIME Types" doppelklicken
# 3. Rechtsklick → "Add..." klicken
# Extension: .woff2
# MIME type: font/woff2
# 4. OK klicken Header und MIME-Types verifizieren
Prüfen Sie den Header und MIME-Types für verschiedene Dateitypen. Besonders wichtig: JavaScript-Dateien müssen text/javascript verwenden (nicht application/x-javascript), und Fonts müssen den korrekten font/-MIME-Type haben.
# PowerShell — Header und MIME-Types prüfen
# nosniff Header prüfen
curl -sI https://ihre-domain.de |
Select-String "X-Content-Type-Options"
# Erwartet: X-Content-Type-Options: nosniff
# JS-Datei: Content-Type muss text/javascript sein
curl -sI https://ihre-domain.de/js/app.js |
Select-String "Content-Type"
# Erwartet: Content-Type: text/javascript
# Font-Datei: Content-Type muss font/woff2 sein
curl -sI https://ihre-domain.de/fonts/inter.woff2 |
Select-String "Content-Type"
# Erwartet: Content-Type: font/woff2
# WebP-Bild: Content-Type muss image/webp sein
curl -sI https://ihre-domain.de/images/hero.webp |
Select-String "Content-Type"
# Erwartet: Content-Type: image/webp Häufige Fehler
Fehlende MIME-Types blockieren Ressourcen
IIS kennt nicht alle modernen Dateitypen (.woff2, .webp, .avif). Ohne registrierten MIME-Type sendet IIS application/octet-stream — Browser blockieren die Ressource bei aktivem nosniff.
Duplikate in staticContent
Ohne remove vor jedem mimeMap kann IIS bei mehrfachem Deployment Duplikate melden und mit HTTP 500 antworten. Verwenden Sie immer die remove/add-Kombination für idempotentes Deployment.
application/x-javascript statt text/javascript
Aeltere IIS-Versionen verwenden den veralteten MIME-Type application/x-javascript. Moderne Browser erwarten text/javascript bei aktivem nosniff und blockieren Scripts mit falschem Typ.
applicationHost.config überschreibt web.config
MIME-Types auf Server-Ebene (applicationHost.config) haben Vorrang vor der web.config. Wenn ein MIME-Type auf Server-Ebene falsch registriert ist, hilft die web.config-Korrektur nicht. Prüfen Sie die Server-Konfiguration.
Compliance-Relevanz
X-Content-Type-Options: nosniff ist eine Grundanforderung für NIS2-konforme Webauftritte. MIME-Sniffing kann zu Script-Injection führen — ein Risiko, das PCI DSS 4.0 und OWASP adressieren. Der Wolf-Agents Web Security Check bewertet diesen Header mit bis zu 10 Punkten.
Wie steht Ihre Domain bei X-Content-Type-Options?
Prüfen Sie es jetzt — kostenlos, ohne Registrierung, mit 166 Prüfpunkte.