CSP-Generator
Enterprise-Cybersicherheit•RFC 3986 & W3C CSP3

CSP-Generator

Sichere Content Security Policy (CSP) Header direkt generieren. script-src, style-src, Nonces und Hashes konfigurieren, um XSS-Angriffe abzuwehren und CSP-Fehler zu beheben.

100
OWASP-SicherheitsstatusGehärtet (Stufe A+)
Sicherheitsprofile:
1
AST-Direktiven-Erfassung
16 Direktiven & Tag-Tokenizer
2
Kryptografischer Nonce & Web Crypto
128-Bit-CSPRNG & SHA-256
3
Statisches OWASP-Bypass-Audit
7 Schwachstellen- & Bypass-Detektoren
4
Plattformübergreifender Export
Nginx, Caddy, Next.js, Apache
Parameter & Eingaben
Architektur-Modus
Durchsetzungs-Header
Erweiterte SicherheitsoptionenW3C CSP Spezifikation Level 3
CSP Level Kompatibilität
Web Crypto CSPRNG Nonce & SHA-256 Hasher
window.crypto.subtle
Nonce-PräfixdG9vbHNhYS1zZWN1cmUtbm9uY2UtMjAyNg==
Inline-Skript SHA-256 Hasher:'sha256-RFWzHiTAeaP0v89upId2U1QGEGNhBlCe/JC9Zdqvqo='
Verifizierte Dienste (Allowlist-Injektoren):
default-srcLadedirektiven (Fetch)Kein Fallback
Universal fallback boundary for all fetch directives when omitted.
'self'
script-srcLadedirektiven (Fetch)erbt von default-src
Governs valid sources for JavaScript execution and inline scripts.
'self''strict-dynamic''nonce-dG9vbHNhYS1zZWN1cmUtbm9uY2UtMjAyNg=='https:'unsafe-inline'
style-srcLadedirektiven (Fetch)erbt von default-src
Governs valid sources for stylesheets, inline styles, and CSS fonts.
'self''unsafe-inline'
img-srcLadedirektiven (Fetch)erbt von default-src
Governs valid sources of images, SVG vectors, and favicons.
'self'data:https:
connect-srcLadedirektiven (Fetch)erbt von default-src
Restricts script interfaces: fetch(), XMLHttpRequest, WebSocket, and sendBeacon.
'self'
font-srcLadedirektiven (Fetch)erbt von default-src
Governs sources for web fonts loaded via @font-face rules.
'self'data:
object-srcLadedirektiven (Fetch)erbt von default-src
Restricts plugins (<object>, <embed>, <applet>). OWASP mandates 'none'.
'none'
media-srcLadedirektiven (Fetch)erbt von default-src
Governs valid sources for <audio> and <video> HTML5 media streams.
(Fällt bei Leerstand auf default-src zurück)
frame-srcLadedirektiven (Fetch)erbt von default-src
Governs valid sources for nested browsing contexts (child <iframe> elements).
(Fällt bei Leerstand auf default-src zurück)
worker-srcLadedirektiven (Fetch)erbt von default-src
Restricts Worker, SharedWorker, and ServiceWorker execution origins.
(Fällt bei Leerstand auf default-src zurück)
manifest-srcLadedirektiven (Fetch)erbt von default-src
Governs valid sources of progressive web application (PWA) manifests.
(Fällt bei Leerstand auf default-src zurück)
base-uriDokumentKein Fallback
Restricts URLs in <base> tags. CRITICAL: does NOT inherit from default-src!
'none'
form-actionNavigationKein Fallback
Restricts target submission endpoints for HTML <form> elements.
'self'
frame-ancestorsDokumentKein Fallback
Clickjacking Armor: restricts parents embedding this site. HTTP header only!
'none'
report-uriReportingKein Fallback
Legacy URI collector endpoint for W3C CSP Level 2 violation reports.
(Explizit unbeschränkt – nicht empfohlen)
report-toReportingKein Fallback
Modern W3C Reporting API endpoint group identifier.
(Explizit unbeschränkt – nicht empfohlen)
Aktive Direktiven: 11Gepinnte Quellen: 18
Modern Strikte Richtlinie
Content-Security-Policy: upgrade-insecure-requests; default-src 'self'; script-src 'self' 'strict-dynamic' 'nonce-dG9vbHNhYS1zZWN1cmUtbm9uY2UtMjAyNg==' https: 'unsafe-inline'; style-src 'self' 'unsafe-inline'; img-src 'self' data: https:; connect-src 'self'; font-src 'self' data:; object-src 'none'; base-uri 'none'; form-action 'self'; frame-ancestors 'none'; require-trusted-types-for 'script'; trusted-types default dompurify

# Recommended Defense-in-Depth Headers:
Cross-Origin-Opener-Policy: same-origin
Cross-Origin-Embedder-Policy: require-corp
Cross-Origin-Resource-Policy: same-origin
X-Content-Type-Options: nosniff
X-Frame-Options: DENY
Referrer-Policy: strict-origin-when-cross-origin
Permissions-Policy: camera=(), microphone=(), geolocation=()
Header: Content-Security-Policy
100% Verarbeitung im Arbeitsspeicher
Primäre Metrik100Bewertungsskala
Effizienz / Kapazität11 Direktiven18 Quellen
Netto-AusgabeAktiv (Enforcing)

Clientseitige Verarbeitung

Hochleistungsberechnung vollständig im Arbeitsspeicher des Browsers ausgeführt.

Zero-Server-Upload-Datenschutz

Alle Payloads verbleiben strikt lokal ohne jegliche externe Serverkommunikation.

Produktionsreifer Export

Saubere, optimierte Ausgabeformate bereit für den sofortigen Produktiveinsatz.

Technische Referenz & Architektur-Leitfaden

Content Security Policy & CSP Generator — Referenzhandbuch

Sichere Content-Security-Policy-Header (CSP) sofort generieren. Konfigurieren Sie script-src, Nonces und Hashes gegen XSS-Angriffe und beheben Sie CSP-Fehler.

Content Security Policy & CSP Generator — Referenzhandbuch — Client-seitige In-Memory-Architektur und Datenfluss
Content Security Policy & CSP Generator — Referenzhandbuch — Client-seitige In-Memory-Architektur und Datenfluss

Wichtige Parameter & Einstellungen

default-src (Fallback für Fetch-Direktiven)Quellenliste (W3C-Fetch-Fallback)

Dient als universelle Fallback-Direktive für alle Fetch-Anweisungen (script-src, style-src, img-src, connect-src, font-src, object-src, media-src, frame-src, worker-src, manifest-src). Die Angabe von 'self' beschränkt nicht definierte Kategorien auf die eigene Origin, während 'none' eine strikte Deklaration für jeden Ressourcentyp erzwingt.

Standard: 'self' (Origin-Fallback)
script-src & 'strict-dynamic' (XSS-Ausführungsschutz)Quellenliste & Schlüsselwort-Ausdrücke

Steuert zulässige JavaScript-Quellen zur Abwehr von Cross-Site-Scripting (XSS). Unter W3C CSP Level 3 weist die Kombination eines kryptografischen Nonce oder Hash-Werts mit 'strict-dynamic' moderne Browser an, von autorisierten Root-Skripten dynamisch erzeugte Skripte zu vertrauen, während Host-Allowlists und 'unsafe-inline' ignoriert werden.

Standard: 'self' 'strict-dynamic' 'nonce-...' (Modern Strict)
object-src & base-uri (Plugin- & Navigationsschutz)Quellenliste (Dokumentintegrität)

object-src beschränkt Plugins wie Flash, Java und Silverlight; die Vorgabe 'none' ist eine OWASP-Pflichtrichtlinie. base-uri begrenzt zulässige URLs im HTML-<base href>-Tag. Wichtig: base-uri erbt nicht von default-src; ein Fehlen ermöglicht Base-Tag-Injection-Angriffe, die relative Skript-URLs kapern.

Standard: object-src 'none'; base-uri 'none'
frame-ancestors (Clickjacking- & UI-Redressing-Schutz)Framing-Richtlinie (nur HTTP-Response-Header)

Legt übergeordnete Seiten fest, die das Dokument in <frame>, <iframe>, <embed> oder <applet> einbetten dürfen, und ersetzt den veralteten X-Frame-Options-Header. 'none' verbietet jegliches Framing (Schutz vor Clickjacking), während 'self' nur die eigene Origin gestattet. Hinweis: frame-ancestors wird in HTML-<meta>-Tags ignoriert.

Standard: 'none' oder 'self' (Clickjacking-Schutz)
connect-src (Schutz vor Datenexfiltration & API-Grenze)URL-Origin-Liste (fetch / XHR / WebSocket)

Begrenzt Ziel-URLs für Skriptschnittstellen wie fetch(), XMLHttpRequest, WebSocket (wss://), EventSource und navigator.sendBeacon(). Essenziell, um Datenexfiltration durch kompromittierte Drittanbieter-Skripte zu verhindern, die Session-Tokens an externe Server übermitteln wollen.

Standard: 'self' (Nur eigene API-Origin)
upgrade-insecure-requests & report-to (Transport & Telemetrie)Direktiven-Flag & Reporting-Gruppe

upgrade-insecure-requests weist Browser an, unsichere HTTP-URLs vor dem Laden automatisch auf HTTPS umzuschreiben, um Mixed-Content-Warnungen zu verhindern. report-to definiert die Reporting-API-Endpunktgruppe für strukturierte JSON-Verstoßberichte und ersetzt mittelfristig das veraltete report-uri.

Standard: upgrade-insecure-requests (Aktiviert)

Profi-Tipps & Best Practices

'strict-dynamic' deaktiviert Host-Allowlists in CSP3-Browsern vollständig

Befindet sich 'strict-dynamic' zusammen mit einem Nonce oder Hash in script-src, ignorieren W3C-CSP-Level-3-konforme Browser hostbasierte Allowlists wie https: oder https://*.google.com sowie 'unsafe-inline' automatisch. Host-Allowlists dienen im Header lediglich als Fallback für ältere Browser (CSP Level 2). Verlassen Sie sich bei Nutzung von 'strict-dynamic' niemals auf Domain-Allowlists für Third-Party-Skripte – das initiale Ladeskript muss das Nonce tragen!

Fehlendes base-uri ermöglicht Skript-Hijacking über HTML-Injection

Viele Entwickler wiegen sich mit default-src 'self' in falscher Sicherheit. Die Direktive base-uri erbt jedoch nicht von default-src. Wird base-uri weggelassen, kann ein Angreifer über eine kleine HTML-Injection-Lücke (z. B. unmaskierte Kommentare oder Markdown) ein Tag wie <base href='https://evil-attacker.com/'> einschleusen. Der Browser löst dann alle relativen Skripte (wie <script src='/static/app.js'>) über die Angreifer-Domain auf und umgeht script-src 'self' vollständig. Definieren Sie stets explizit base-uri 'none' oder 'self'.

'unsafe-inline' wird bei vorhandenem Nonce oder Hash ab CSP2 ignoriert

Wenn Sie Legacy-Browser unterstützen müssen, die lediglich CSP Level 1 beherrschen, können Sie gefahrlos script-src 'nonce-XYZ123' 'unsafe-inline' angeben. Gemäß W3C CSP Level 2 und Level 3 ignorieren moderne Browser 'unsafe-inline' vollständig, sobald ein Nonce oder Hash-Wert deklariert ist. Dies garantiert saubere Abwärtskompatibilität, ohne die Sicherheit moderner Clients zu schwächen.

default-src schützt nicht vor Clickjacking oder Form-Hijacking

Ein verbreiteter Irrglaube ist, dass default-src 'none' alle Dokumentaktionen absichert. Tatsächlich wirkt default-src ausschließlich auf Fetch-Direktiven. Es bietet keinerlei Schutz für frame-ancestors (Einbetten in bösartige Iframes zwecks Clickjacking) und form-action (Absenden sensibler Formulardaten an fremde Endpunkte). Deklarieren Sie frame-ancestors 'none'/'self' und form-action 'self' stets explizit.

Häufige Fehlerquellen & Fehlerbehebung

⚠️Browser-Konsole meldet: Refused to execute inline script because it violates the following Content Security Policy directive: 'script-src 'self''

Dieser Fehler tritt auf, weil ein Inline-<script>-Tag oder ein Inline-Event-Handler (wie onclick oder onload) ohne Autorisierung ausgeführt wird. Lösung nach modernem Standard: (1) Versehen Sie das Skript-Tag mit einem kryptografischen Nonce (<script nonce='...'>) und tragen Sie das passende Nonce in script-src 'nonce-...' ein; (2) Berechnen Sie alternativ den SHA-256-Hash des exakten Skriptinhalts und fügen Sie 'sha256-...' zu script-src hinzu; oder (3) Lagern Sie Inline-Handler in externe JavaScript-Dateien aus und binden Sie diese mit addEventListener an.

⚠️API-Aufruf schlägt fehl mit: Refused to connect to 'https://api.example.com' because it violates connect-src

Moderne Browser beschränken fetch(), XMLHttpRequest, WebSocket (wss://) und sendBeacon auf die in connect-src erlaubten Origins. Fehlt die connect-src-Deklaration, greift der Fallback auf default-src. Kommuniziert Ihr Frontend mit einem separaten Backend oder Drittanbieter-Dienst (z. B. Stripe, Sentry oder einem API-Gateway), fügen Sie die exakte Origin (z. B. connect-src 'self' https://api.example.com https://api.stripe.com) zu Ihrer CSP hinzu.

⚠️In script-src deklarierter SHA-256-Hash führt dennoch zu CSP-Verletzung in Chrome oder Firefox

Das Hashing von CSP-Skripten erfolgt bitgenau. Bereits ein einzelner zusätzlicher Zeilenumbruch (\r\n vs. \n), ein Leerzeichen oder Einrückungsunterschiede zwischen berechnetem Hash und dem Inline-Code erzeugen eine kryptografische Abweichung. Berechnen Sie den Hash zudem ausschließlich über den inneren Code ohne umschließende <script>- und </script>-Tags. Stellen Sie sicher, dass Server-Templates oder Minifier das Skript nach der Hash-Berechnung nicht mehr verändern.

⚠️frame-ancestors-Direktive wird bei Angabe in einem HTML-<meta>-Tag ignoriert

Gemäß W3C-CSP-Spezifikation sind frame-ancestors, report-uri und report-to in HTML-<meta http-equiv='Content-Security-Policy'>-Tags unzulässig und werden vom Browser ignoriert. Um Clickjacking wirksam zu verhindern, MUSS die Richtlinie als echter HTTP-Response-Header vom Webserver ausgeliefert werden (z. B. via Nginx add_header, Apache Header set oder Next.js-Middleware).

Häufig gestellte Fragen (FAQ)

Wie erstelle ich eine Content Security Policy zur Abwehr von XSS-Angriffen?▼

Zur Abwehr von Cross-Site-Scripting (XSS) empfiehlt sich eine Strict CSP mit kryptografischen Nonces oder Hashes in Kombination mit 'strict-dynamic' und object-src 'none'. Ein bewährter Basis-Header lautet: Content-Security-Policy: default-src 'self'; script-src 'self' 'strict-dynamic' 'nonce-RANDOM_BASE64' 'unsafe-inline'; object-src 'none'; base-uri 'none'; frame-ancestors 'none';. Dies unterbindet unautorisierte Inline-Skripte, blockiert Plugin-Exploits und verhindert Base-Tag-Hijacking.

Was ist der Unterschied zwischen default-src und script-src in CSP?▼

default-src ist die übergeordnete Fallback-Direktive für alle Ressourcentypen ohne eigene explizite Anweisung (wie script-src, style-src, img-src, connect-src und font-src). script-src regelt gezielt die Ausführung von JavaScript-Dateien und Inline-Skripten. Ist script-src definiert, überschreibt es default-src für Skripte; fehlt script-src, greift der Browser automatisch auf default-src zurück.

Warum gilt 'unsafe-inline' in der Content Security Policy als gefährlich?▼

'unsafe-inline' ist gefährlich, da der Browser damit jeden im HTML-Dokument gefundenen JavaScript-Code ausführt – einschließlich injizierter Skripte aus Stored- oder Reflected-XSS-Schwachstellen. 'unsafe-inline' hebelt den primären XSS-Schutz der CSP aus, sofern es nicht durch ein kryptografisches Nonce oder 'strict-dynamic' ergänzt wird, wodurch moderne Browser das Schlüsselwort ignorieren.

Wie funktionieren CSP-Nonces und wie werden sie generiert?▼

Ein CSP-Nonce (Number used once) ist ein kryptografisch sicherer Zufallswert (typischerweise 128 Bit in Base64), der vom Webserver für jeden HTTP-Request dynamisch neu generiert wird. Der Server liefert den Wert im HTTP-Header aus (script-src 'nonce-abc123xyz') und setzt das Attribut an autorisierte Skript-Tags (<script nonce='abc123xyz'>). Angreifer können diesen Nonce nicht vorhersagen, wodurch injizierte Skripte blockiert werden.

Was unterscheidet Content-Security-Policy von Report-Only?▼

Content-Security-Policy blockiert Richtlinienverstöße aktiv und verhindert das Ausführen nicht autorisierter Skripte oder Verbindungen. Content-Security-Policy-Report-Only protokolliert Verstöße lediglich und sendet Berichte an konfigurierte Endpunkte (report-to / report-uri), ohne Ressourcen zu blockieren. Dieser Report-Only-Modus ist der Standard zur risikofreien Analyse von Produktivsystemen vor der strikten Durchsetzung.

Kann eine Content Security Policy per HTML-Meta-Tag konfiguriert werden?▼

Ja, eine CSP kann über das Element <meta http-equiv='Content-Security-Policy' content='...'> im <head> des Dokuments eingebunden werden. Allerdings verbietet die W3C-Spezifikation Framing- und Reporting-Direktiven in Meta-Tags: frame-ancestors, report-uri und report-to werden vom Browser ignoriert. Für vollständigen Schutz vor Clickjacking und verlässliche Telemetrie sollte die CSP stets als echter HTTP-Response-Header ausgeliefert werden.

Verwandte Tools & Hilfsprogramme

Alle Tools →