Strict-CSP-Header mit Nonces statt unsafe-inline, BSI-IT-Grundschutz-konform.
Was ist das, und wann brauche ich es?
Was ist das?
Die Content-Security-Policy (CSP, Level 3) ist ein HTTP-Antwort-Header, mit dem Sie dem
Browser sagen: aus welchen Quellen darf er Skripte, Bilder, Schriften, iFrames usw.
überhaupt laden. Alles, was nicht in der Liste steht, wird blockiert.
Damit unterbinden Sie Cross-Site-Scripting (XSS) und das Einschleusen fremder Skripte über
kompromittierte Drittanbieter - die heute häufigste Angriffsklasse auf Web-Anwendungen.
Wichtig: der Header gehört in die Server-Konfiguration (Nginx, Apache,
Caddy, IIS) - nicht als <meta>-Tag in HTML; dort wird er
teilweise ignoriert und ist weniger streng.
Wann brauche ich das?
Für jede selbst gehostete Web-Anwendung mit Benutzer-Login, Formularen oder eingebetteten
Drittanbieter-Skripten (Analytics, Maps, Embeds). Bei rein statischen Marketing-Seiten ohne
Eingabefelder geringer Mehrwert, aber Best-Practice für die BSI-IT-Grundschutz-Konformität.
Roll-out: erst mit Content-Security-Policy-Report-Only und Report-Endpoint testen, dann nach 2-4 Wochen ohne Verstöße auf scharf schalten.
{NONCE} ist ein Platzhalter, den Ihr Server pro Request durch einen frisch generierten, kryptographisch
zufälligen Wert ersetzen muss (mindestens 128 Bit Entropie, base64-encoded). Derselbe Wert muss
als Attribut nonce="..." an jedem inline-Skript
stehen, das die Seite ausliefert.
report-to ist die moderne Variante des CSP-Reportings. Sie braucht einen
begleitenden HTTP-Response-Header der Form Reporting-Endpoints: default="https://example.com/csp-report". Ohne diesen Header zeigt der Browser zwar Verstöße in der Konsole, sendet aber keine
Berichte. report-uri ist deprecated, wird aber von allen aktuellen Browsern weiterhin
gelesen und ist der einzige Reporting-Mechanismus, den Firefox aktuell unterstützt - daher parallel
setzen.
Hinweis BSI APP.3.1: Eine strikte CSP ist eine Defense-in-Depth-Maßnahme - sie fügt sich neben
Output-Encoding, HttpOnly-Cookies und SameSite-Attributen in die Schichten gegen XSS und
Clickjacking ein. Eine Nonce-basierte Strict-CSP nach Google-Pattern setzt 'strict-dynamic' voraus, sonst werden dynamisch eingefügte Skripte blockiert.
Security-Header einer URL prüfen
Holt die URL und prüft CSP plus alle gängigen Web-Security-Header (HSTS, X-Content-Type-Options, Permissions-Policy etc.).
Probieren mit:
Server-Pfad: Diese Inspektion läuft NICHT browser-lokal. Wir holen den DNS-Record bzw. die HTTPS-Antwort über unseren Server. Wir loggen weder die abgefragte Domain noch das Ergebnis. 12 Anfragen pro Minute pro IPv4-Adresse bzw. IPv6-/64-Subnet.