CSP-Generator

Haken Sie Direktiven und Quellen an, und diese Seite stellt eine korrekte einzeilige Content-Security-Policy für Ihren Antwort-Header oder das <meta>-Tag zusammen — dazu die wichtigen Hinweise: welche Direktiven nie auf default-src zurückfallen, wann ein Hash oder Nonce unsafe-inline stillschweigend überstimmt und was strict-dynamic abschaltet. Ein eingebauter SHA-256/384/512-Hash-Generator verwandelt Inline-Skripte und -Stile in 'sha256-…'-Quellen. Alles läuft in Ihrem Browser; nichts wird hochgeladen.
Nicht angehakte Direktiven fehlen einfach in der Richtlinie; ein Haken ohne gewählte Quellen wird ignoriert. 'none' hebt die anderen Kästchen seiner Zeile auf. Das Feld zusätzliche Quellen nimmt eine kommagetrennte Liste entgegen: Hostnamen (cdn.example.com), Schemata (https:), Hashes und Nonces mit oder ohne Anführungszeichen.
Direktive 'self''none''unsafe-inline' 'unsafe-eval''strict-dynamic' data:blob: zusätzliche Quellen
Diese vier fallen nicht auf default-src zurück: Sie wegzulassen bedeutet „keine Einschränkung“, daher setzt eine vollständige Richtlinie sie explizit.
Direktive'self''none'zusätzliche Quellen

Skript-Nonce
report-uri
report-to
Noch nichts erstellt. Haken Sie einige Quellen an und drücken Sie Richtlinie erstellen, oder laden Sie das OWASP-Basisbeispiel.
Fügen Sie den exakten Inhalt zwischen <script> und </script> (oder den Style-Block) ein — Byte für Byte, ohne führenden oder nachgestellten Zeilenumbruch — und wählen Sie einen Algorithmus. Das Ergebnis ist die Quelle 'sha256-…', die CSP 3 erwartet.
Die Hash-Ausgabe erscheint hier.
Nach Möglichkeit als Header ausliefern, nicht als Meta-Tag. Der Antwort-Header ist die vollständige CSP: frame-ancestors, report-uri und report-to funktionieren nur dort, und ein Header wird angewendet, bevor das erste Byte HTML geparst wird. Das Meta-Tag ist die Ausweichlösung für statische Dateien ohne Serverkonfiguration. Prüfen Sie die Header, die Ihre Seite tatsächlich sendet, im Prüfer für Sicherheitsheader, und zerlegen Sie rohe Antwortblöcke im HTTP-Header-Parser.
Selbsttest
Führt den Generator gegen feste Zustände erneut aus: Reihenfolge der Quellen, gegenseitiger Ausschluss von 'none', die OWASP-Basiszeichenkette, Anführungszeichen bei Nonce und Hash, die Hinweise zu fehlendem Fallback für base-uri / form-action / frame-ancestors, unsafe-inline durch Nonce oder Hash überstimmt, Hinweise zu strict-dynamic, Namen der Report-Only-Header, Ausschlüsse für Meta-Tags, der Hash-Generator gegen unabhängig berechnete SHA-Vektoren sowie die Negativpfade. Nichts wird irgendwohin gesendet.
Was ist eine Content Security Policy?
In einem Satz: Eine CSP ist eine Positivliste, die der Server mit einer Seite schickt und die dem Browser genau sagt, woher Skripte, Stile, Bilder und Verbindungen stammen dürfen — so schlägt ein eingeschleustes Skript selbst dann fehl, wenn ein Angreifer HTML injiziert, weil seine Quelle nicht auf der Liste steht.
Die drei Gruppen von Direktiven
GruppeBeispieleSteuerelementeFällt auf default-src zurück?
Fetch-Direktivenscript-src, style-src, img-src, connect-src, font-src, object-src, frame-src, worker-src, media-src, manifest-srcwo jede Art von Inhalt geladen werden darfja — eine nicht angehakte Direktive erbt default-src
Dokument-Direktivenbase-uri, form-action, frame-ancestors, sandboxwas die Seite selbst tun darf (eingebettet werden, Formulare absenden, relative URLs auflösen)nein — jede muss explizit gesetzt werden
Berichte und Sonstigesreport-uri, report-to, upgrade-insecure-requestswohin Verstoßberichte gehen und das Upgrade alter URLsnein (sie sind keine fetch-Direktiven)
Die schärfsten Kanten, je ein Absatz

'unsafe-inline' gegen Hashes und Nonces. Enthält eine Direktive ein Nonce oder eine Hash-Quelle, sagt CSP 3, dass 'unsafe-inline' ignoriert wird — es bleibt nur für uralte Browser stehen. Deshalb bedeutet „wir haben ein Nonce hinzugefügt und unsafe-inline der Sicherheit halber behalten“ in Wahrheit, dass moderne Browser das Nonce durchsetzen. Der Generator markiert diese Kombination, damit es eine Entscheidung und kein Zufall ist.

strict-dynamic schaltet Ihre Positivliste ab. Mit strict-dynamic in script-src werden Host-Quellen, Schemata, 'self', 'unsafe-inline' und data: für Skripte alle ignoriert; nur Nonces und Hashes zählen, und Skripte, die sie laden, dürfen weitere Skripte laden. Es ist das moderne Muster für Loader-Skripte — macht aber den Rest der script-src-Liste dekorativ.

Meta-Tags sind zweitklassig. frame-ancestors, report-uri und report-to werden in <meta http-equiv> ignoriert. Der Generator zeigt, welche Teile Ihrer Richtlinie stillschweigend nicht greifen würden.

Häufige Fehler
  • Beginnen mit default-src * plus einer langen Liste von Ausnahmen. Gehen Sie umgekehrt vor: ein enges default-src 'self', dann nur die Direktiven erweitern, die es brauchen. Enge Richtlinien schlagen beim Testen laut fehl; weite Richtlinien schlagen stillschweigend auf ewig fehl.
  • script-src 'unsafe-inline' 'unsafe-eval' ausliefern und das Thema für erledigt halten. Eine solche Richtlinie blockiert fast nichts, was ein XSS-Angriff tun will. Versehen Sie Skripte mit Nonce oder Hash, fügen Sie strict-dynamic hinzu und lassen Sie report-only in der Produktion laufen, um Regressionen zu erkennen.
  • Vergessen, dass default-src nicht alles abdeckt. base-uri, form-action, frame-ancestors und sandbox haben keinen Fallback — die am häufigsten genannte Lücke in realen CSP-Einsätzen.
  • Zuerst im Durchsetzungsmodus testen. Betreiben Sie die Richtlinie eine Woche lang als Report-Only mit einem Collector, lesen Sie die Berichte und schalten Sie dann auf Durchsetzung um. Eine Richtlinie, die den Checkout bricht, ist schlimmer als gar keine Richtlinie.
  • Leerraum unterschiedlich hashen. Ein Hash deckt die exakten Bytes des Inline-Blocks ab; ein „hilfreicher“ Build-Schritt, der nachgestellte Zeilenumbrüche entfernt, ändert jeden Hash. Erzeugen Sie Hashes aus dem, was ausgeliefert wird, nicht aus dem Quelltext.
FAQ

Brauche ich default-src, wenn ich jede Direktive aufliste? Nein, aber es als Untergrenze zu behalten ist gute Praxis: Neue fetch-Direktiven in künftigen Browsern fallen dann auf Ihre Basislinie zurück statt auf „erlaubt“.

Was bewirkt upgrade-insecure-requests eigentlich? Es weist den Browser an, jede http://-URL, die die Seite laden würde — Bilder, Stile, Abrufe —, vor der Anfrage in https:// umzuschreiben. Es ist ein Migrationswerkzeug; der Endzustand sind Seiten ganz ohne http://-URL.

Nonce oder Hash? Ein Nonce, wenn Sie die Serverantwort kontrollieren (ein Zufallswert pro Antwort, im Header und in jedem Skript-Tag). Ein Hash, wenn das HTML statisch oder gecacht ist. Niemals ein statisches Nonce — ein Nonce, das sich nicht ändert, ist nur unsafe-inline mit zusätzlichen Schritten.

Warum wird meine Richtlinie ausgeliefert, aber Verstöße kommen nicht an? Prüfen Sie, ob Sie im Report-Only-Modus sind (nur Berichte), ob report-uri auf einen Collector zeigt, der POST annimmt, und ob Sie auch die Mechanik Reporting-Endpoints / Report-To gesetzt haben, die die moderne Direktive report-to benötigt.

Ersetzt eine CSP andere Schutzmaßnahmen? Nein. Sie ist eine Schicht: Behalten Sie das Escaping Ihrer Ausgabe bei, halten Sie Cookies hinter HttpOnly und Secure und behalten Sie HSTS. Der Prüfer für Sicherheitsheader auf dieser Website bewertet das gesamte Set.