Content-Security-Policy-Header aus erlaubten Quellen erstellen
Ein Content-Security-Policy-Header teilt dem Browser mit, von welchen Orten Skripte, Stylesheets, Bilder, Schriftarten, Frames und andere Ressourcen geladen werden dürfen.
Im Browser ausführen – kostenlos
Läuft direkt in Ihrem Browser – kostenlos. Ihre Datei verlässt Ihren Browser nicht und wird an keinen Server übertragen.
Dieser Generator wandelt strukturierte Direktivenzeilen in einen korrekt getrennten Headerwert um und erkennt unbekannte Namen, Duplikate, unsichere Trennzeichen sowie fehlende Werte. Er eignet sich für Richtlinien aus Bereitstellungswerkzeugen, Konfigurationsmasken, Sicherheitschecklisten oder Anwendungsvorlagen, wenn Sie eine vorhersagbare Ausgabe benötigen, ohne Fragmente von Hand zu verbinden oder versehentlich eine falsch geschriebene Direktive zu übernehmen.
Beschreiben Sie die Richtlinie in Direktivenzeilen
Geben Sie für jede zu sendende Richtliniendirektive eine Zeile ein. Jede Zeile enthält den Namen und eine geordnete Liste von Quellausdrücken oder Tokens. default-src beginnt beispielsweise häufig mit 'self', während script-src einen bestimmten HTTPS-Host für die Inhaltsauslieferung ergänzen kann. Der Generator wandelt Direktivennamen in Kleinbuchstaben um, entfernt äußere Leerzeichen, bewahrt die Reihenfolge der Zeilen und Quellen und verbindet die fertigen Direktiven mit Semikolons. Er erfindet keine Ausweichdirektiven und erweitert die Richtlinie nicht unbemerkt. Das ist wichtig, weil Auslassen und Erlauben unterschiedliche Sicherheitsfolgen haben. Fehlt img-src, kann default-src greifen; ein zusätzliches Platzhalterzeichen kann dagegen mehr Orte als beabsichtigt freigeben. Behandeln Sie jede Quelle als einzelnes CSP-Token und behalten Sie die Anführungszeichen bei Wörtern wie 'self' und 'none' bei. Verwenden Sie Schemata wie data: nur, wenn die Anwendung sie wirklich benötigt. Das Ergebnis ist der vollständige Wert und nicht der Headername; Sie können es direkt Content-Security-Policy in Ihrer Server- oder Edge-Konfiguration zuweisen.
Die Validierung erkennt Strukturfehler
Der Generator akzeptiert ausschließlich bekannte CSP-Direktivennamen und meldet bei unbekannten Namen einen Eingabefehler. Damit findet er leicht übersehene Schreibfehler, die Browser sonst ignorieren könnten und durch die eine Ressourcengruppe weniger streng als erwartet behandelt würde. Doppelte Direktiven werden ebenfalls abgelehnt, weil eine einzige eindeutige Zeile leichter zu prüfen ist und Überraschungen vermeidet. Semikolons, Kommas, Zeilenumbrüche und eingebettete Leerzeichen sind in einzelnen Quelltokens unzulässig, da sie die erzeugte Richtlinie teilen oder beschädigen könnten. Die meisten Direktiven benötigen mindestens eine Quelle oder ein Token. Die wertlosen Direktiven upgrade-insecure-requests und block-all-mixed-content verlangen dagegen eine leere Quellenliste und werden nur mit ihrem Namen ausgegeben. Das Werkzeug prüft die Struktur, nicht die Vertrauenswürdigkeit eines Hosts oder das Schutzniveau Ihrer Anwendung. Es ruft keine Website ab, untersucht keinen Code, erzeugt keine Nonces und testet keine Browserkompatibilität. Prüfen Sie die Berechtigungen anhand des tatsächlichen Verhaltens und führen Sie restriktive Änderungen überwacht und stufenweise ein, wenn Störungen Benutzer betreffen könnten.
Stellen Sie das Ergebnis bereit und pflegen Sie es
Übernehmen Sie den zurückgegebenen Wert in den Antwortheader Content-Security-Policy. Bewahren Sie ihn als Konfiguration bei der Anwendung auf, statt Fragmente über Middleware, Proxyregeln und Vorlagen zu verteilen. Eine zentrale Liste macht Ergänzungen nachvollziehbar und ermöglicht automatisierten Systemen, bei jedem Lauf exakt dieselbe Zeichenfolge zu erzeugen. Beginnen Sie bewusst mit default-src als Grundlage und ergänzen Sie engere Direktiven wie script-src, style-src, img-src, connect-src, font-src, frame-src, object-src und frame-ancestors, wenn die Anwendung abweichendes Verhalten benötigt. Ziehen Sie ausdrückliche Hosts und Schemata weitreichenden Platzhaltern vor. Wenn Sie Hashes oder Nonces verwenden, geben Sie das vollständige CSP-Token in Anführungszeichen an. Die Nonce-Erzeugung gehört in die Schicht, die jede Anfrage bearbeitet, denn diese Fähigkeit ist deterministisch und erzeugt keine Zufallswerte. Testen Sie die bereitgestellte Antwort in den Browserwerkzeugen und erwägen Sie vor der Erzwingung einen reinen Berichtsmodus. Berichte können blockierte Abhängigkeiten zeigen, sollten aber zu präzisen Änderungen statt pauschalen Freigaben führen. Führen Sie den Generator nach jeder Konfigurationsänderung erneut aus. API-Anfragen kosten $0.002; die Browserversion nutzt denselben reinen Algorithmus.
Anwendungsfälle
Serverkonfiguration erzeugen
Wandeln Sie eine geprüfte Liste von CSP-Direktiven in den exakten Wert für die Anwendungs- oder Proxykonfiguration um.
Bereitstellungsformular prüfen
Lehnen Sie falsch geschriebene Direktiven und fehlerhafte Quelltokens ab, bevor die Richtlinie produktiv wird.
Deterministische Ausgabe sichern
Erzeugen Sie stabilen CSP-Text aus versionierter Konfiguration für Tests, Vorlagen und Infrastrukturautomatisierung.
Häufige Fragen
Was kostet die Nutzung?
Jede API-Anfrage kostet $0.002. Die Browserversion läuft lokal mit demselben deterministischen Algorithmus.
Prüft das Werkzeug, ob meine Richtlinie sicher ist?
Nein. Es prüft Direktivennamen und Ausgabestruktur; Sie müssen entscheiden, welchen Quellen Ihre Anwendung vertrauen darf.
Müssen Schlüsselwörter in Anführungszeichen bleiben?
Ja. Geben Sie CSP-Schlüsselwörter als vollständige Tokens ein, etwa 'self', 'none', 'unsafe-inline' oder 'strict-dynamic'.
Kann es eine Nonce erzeugen?
Nein. Nonces müssen unvorhersagbar sein und pro Antwort entstehen. Geben Sie beim Zusammenstellen einer Richtlinie ein vorbereitetes Nonce-Token in Anführungszeichen an.
Warum werden doppelte Direktiven abgelehnt?
Eine Zeile je Direktive ist eindeutig, leichter zu prüfen und vermeidet eine Abhängigkeit vom Browserverhalten bei wiederholten Namen.
Wie füge ich upgrade-insecure-requests hinzu?
Fügen Sie diese Direktive mit einer leeren Quellenliste hinzu. Sie wird als Direktive ohne Wert ausgegeben.
Für Entwickler — API-Zugang
Alles auf dieser Seite ist auch per API verfügbar. Dieser Abschnitt richtet sich an Teams, die es in ihre eigenen Systeme einbinden möchten; alle anderen nutzen einfach das Tool oben.
Endpunkt
Authentifizierung per Bearer-Token. Ein einziger POST stellt die Aufgabe in die Warteschlange; das Ergebnis erhalten Sie per Webhook oder über einen signierten Link.
Aufruf aus Ihrem Stack
curl -X POST https://api.kit.forhosting.com/security/csp-header-build \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"directives":[{"name":"default-src","sources":["'\''self'\''"]},{"name":"script-src","sources":["'\''self'\''","https://cdn.example.com"]},{"name":"img-src","sources":["'\''self'\''","data:"]}]}'const res = await fetch("https://api.kit.forhosting.com/security/csp-header-build", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"directives": [
{
"name": "default-src",
"sources": [
"'self'"
]
},
{
"name": "script-src",
"sources": [
"'self'",
"https://cdn.example.com"
]
},
{
"name": "img-src",
"sources": [
"'self'",
"data:"
]
}
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/security/csp-header-build",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"directives": [
{
"name": "default-src",
"sources": [
"'self'"
]
},
{
"name": "script-src",
"sources": [
"'self'",
"https://cdn.example.com"
]
},
{
"name": "img-src",
"sources": [
"'self'",
"data:"
]
}
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/security/csp-header-build", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"directives":[{"name":"default-src","sources":["\'self\'"]},{"name":"script-src","sources":["\'self\'","https://cdn.example.com"]},{"name":"img-src","sources":["\'self\'","data:"]}]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"directives":[{"name":"default-src","sources":["'self'"]},{"name":"script-src","sources":["'self'","https://cdn.example.com"]},{"name":"img-src","sources":["'self'","data:"]}]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/security/csp-header-build", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Beispiel-Anfrage
{
"directives": [
{
"name": "default-src",
"sources": [
"'self'"
]
},
{
"name": "script-src",
"sources": [
"'self'",
"https://cdn.example.com"
]
},
{
"name": "img-src",
"sources": [
"'self'",
"data:"
]
}
]
}Beispiel-Antwort
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "security.csp_header_build",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}Die API arbeitet asynchron: Sie erhalten sofort eine task_id. Polling ist mit 1 Anfrage pro Sekunde erlaubt.
Preis
Der Preis steht auf der Seite – keine Tokens, keine Credits. Fehlgeschlagene Aufgaben werden nicht berechnet.
Fehler
| HTTP | Code | Bedeutung |
|---|---|---|
401 | unauthorized | Der API-Schlüssel fehlt oder ist ungültig – prüfen Sie den Authorization-Header (Bearer). |
402 | insufficient_balance | Ihr Guthaben reicht für diese Aufgabe nicht aus – Aufladungen verfallen nicht. |
404 | unknown_type | Unbekannter Aufgabentyp – prüfen Sie das Feld „type“ gegen den Katalog. |
429 | rate_limited | Zu viele Anfragen – warten Sie kurz; Polling ist mit 1 Anfrage pro Sekunde erlaubt. |