Reporting API für IIS konfigurieren
Schritt-für-Schritt-Anleitung: Reporting-Endpoints in IIS einrichten — CSP-Violations erfassen, NEL aktivieren und mit ASP.NET Core auswerten.
Reporting API in IIS
Die Reporting API ermöglicht es, CSP-Violations, Deprecation Warnings und Network Error Logging automatisch an einen Endpoint zu senden. Mit 4 von 166 Punkten im Wolf-Agents Web Security Check ist Reporting der Schlüssel zur kontinuierlichen Verbesserung Ihrer Security-Header-Konfiguration.
In IIS setzen Sie den Reporting-Endpoints-Header per web.config customHeaders. Für den Report-Empfänger nutzen Sie einen ASP.NET Core Endpoint oder einen externen Dienst. Wolf-Agents bietet mit dem CSP-Violation-Monitoring eine integrierte Lösung.
Besonders wertvoll ist die Kombination mit Network Error Logging (NEL): Waehrend CSP-Reports Policy-Verstoße melden, erfasst NEL Netzwerkfehler wie DNS-Ausfaelle, TLS-Fehler und HTTP-Statuscodes — alles automatisch ohne Client-seitiges JavaScript.
Reporting-Endpoints und CSP konfigurieren
Setzen Sie den Reporting-Endpoints-Header und verknüpfen Sie ihn mit der CSP via report-to-Direktive. Ersetzen Sie die URL durch Ihren eigenen Reporting-Endpoint. Mehrere Endpoints können kommasepariert definiert werden.
<!-- web.config — Reporting-Endpoints + CSP -->
<configuration>
<system.webServer>
<httpProtocol>
<customHeaders>
<!-- Reporting-Endpoints (Reporting API v1) -->
<add name="Reporting-Endpoints"
value="csp-endpoint="https://ihre-domain.de/csp-report", default="https://ihre-domain.de/reports"" />
<!-- CSP mit report-to -->
<add name="Content-Security-Policy"
value="default-src 'self'; script-src 'self'; report-to csp-endpoint" />
</customHeaders>
</httpProtocol>
</system.webServer>
</configuration> # PowerShell — Reporting-Endpoints setzen
$sitePath = 'MACHINE/WEBROOT/APPHOST/Default Web Site'
$filter = "system.webServer/httpProtocol/customHeaders"
# Reporting-Endpoints Header hinzufügen
Add-WebConfigurationProperty -pspath $sitePath \
-filter $filter -name "." -value @{
name = 'Reporting-Endpoints'
value = 'csp-endpoint="https://ihre-domain.de/csp-report"'
}
# NEL-Header (optional)
Add-WebConfigurationProperty -pspath $sitePath \
-filter $filter -name "." -value @{
name = 'NEL'
value = '{"report_to":"default","max_age":604800}'
}
Write-Host "Reporting-Endpoints konfiguriert." ASP.NET Core Report-Endpoint
Erstellen Sie einen Endpoint in Ihrer ASP.NET Core Anwendung, der die CSP-Reports empfaengt und loggt. Prüfen Sie den Content-Type, um nur valide Reports zu akzeptieren. In der Produktion speichern Sie die Reports in einer Datenbank oder leiten sie an ein Monitoring-System weiter.
// ASP.NET Core — CSP-Report-Endpoint mit Logging
// Program.cs
app.MapPost("/csp-report", async (HttpContext context) =>
{
// Content-Type prüfen
var contentType = context.Request.ContentType;
if (contentType != "application/csp-report" &&
contentType != "application/reports+json")
{
return Results.BadRequest();
}
using var reader = new StreamReader(
context.Request.Body);
var body = await reader.ReadToEndAsync();
// Report loggen (Produktiv: in DB speichern)
logger.LogWarning(
"CSP Violation: {Report}", body);
return Results.NoContent();
});
// CORS für Cross-Origin Reports erlauben
app.MapPost("/reports", async (HttpContext ctx) =>
{
ctx.Response.Headers.Append(
"Access-Control-Allow-Origin", "*");
// Report verarbeiten...
return Results.NoContent();
}); Network Error Logging (NEL) aktivieren
NEL meldet automatisch Netzwerkfehler: DNS-Aufloesung, TCP-Verbindung, TLS-Handshake und HTTP-Fehler. Der max_age-Wert definiert die Gueltigkeitsdauer in Sekunden (604800 = 7 Tage). failure_fraction bestimmt den Anteil der gemeldeten Fehler.
<!-- web.config — Network Error Logging (NEL) -->
<!-- Automatische Berichte bei Netzwerkfehlern -->
<configuration>
<system.webServer>
<httpProtocol>
<customHeaders>
<!-- Reporting-Endpoints (Pflicht für NEL) -->
<add name="Reporting-Endpoints"
value="default="https://ihre-domain.de/reports"" />
<!-- NEL: 7 Tage, 100% der Fehler melden -->
<add name="NEL"
value="{"report_to":"default","max_age":604800,"failure_fraction":1.0}" />
</customHeaders>
</httpProtocol>
</system.webServer>
</configuration> Reports testen und verifizieren
Provozieren Sie eine CSP-Violation, um den Reporting-Flow zu testen. Laden Sie ein Script von einer nicht autorisierten Domain, um zu prüfen, ob der Report an Ihren Endpoint gesendet wird. Nutzen Sie den Wolf-Agents Web Security Check für eine automatische Prüfung.
# PowerShell — Reporting-Endpoints prüfen
curl -sI https://ihre-domain.de |
Select-String "Reporting-Endpoints|NEL"
# Erwartete Ausgabe:
# Reporting-Endpoints: csp-endpoint="https://ihre-domain.de/csp-report"
# NEL: {"report_to":"default","max_age":604800}
# Report-Endpoint testen
$body = '{"csp-report":{"document-uri":"test"}}'
Invoke-WebRequest -Uri "https://ihre-domain.de/csp-report" \
-Method POST \
-ContentType "application/csp-report" \
-Body $body
# Erwartet: HTTP 204 No Content Häufige Fehler
report-uri vs. report-to
report-uri ist veraltet, wird aber noch von allen Browsern unterstützt. report-to ist der moderne Standard, wird aber noch nicht von Firefox unterstützt. Für maximale Abdeckung setzen Sie beide Direktiven in Ihrer CSP.
Reporting-Endpoint nicht erreichbar
Der Endpoint muss HTTPS verwenden und CORS für Cross-Origin-Reports erlauben. Stellen Sie sicher, dass Access-Control-Allow-Origin korrekt gesetzt ist, sonst werden Reports verworfen.
DSGVO bei Report-Daten
CSP-Reports können Benutzer-URLs und IP-Adressen enthalten. Beachten Sie die DSGVO-Anforderungen: Speichern Sie Reports pseudonymisiert und mit begrenzter Aufbewahrungsfrist von maximal 30 Tagen.
JSON-Escaping in web.config
Anführungszeichen in Header-Werten müssen als " escaped werden. Vergessen Sie das Escaping, liefert IIS einen ungültige Header-Wert, und der Browser ignoriert den gesamten Reporting-Endpoints-Header.
Compliance-Relevanz
PCI DSS 4.0 (Anforderung 6.4.3) fordert ab März 2025 kontinuierliches Monitoring von CSP-Violations auf Zahlungsseiten. Die Reporting API liefert diese Daten automatisch. NIS2 verlangt die Erkennung von Sicherheitsvorfällen — Reporting ist der erste Schritt. Der Wolf-Agents Web Security Check bewertet die Reporting-Konfiguration mit bis zu 4 Punkten.
Wie steht Ihre Domain bei Reporting API?
Prüfen Sie es jetzt — kostenlos, ohne Registrierung, mit 166 Prüfpunkte.