Content Security Policy: Sicherheit durch Einschränkung | Enjyn Gruppe
Hallo Welt
Hallo Welt
Original Lingva Deutsch
Übersetzung wird vorbereitet...
Dieser Vorgang kann bis zu 60 Sekunden dauern.
Diese Seite wird erstmalig übersetzt und dann für alle Besucher gespeichert.
0%
DE Zurück zu Deutsch
Übersetzung durch Lingva Translate

235 Dokumentationen verfügbar

Wissensdatenbank

Content Security Policy CSP

Zuletzt aktualisiert: 20.01.2026 um 10:03 Uhr

Content Security Policy: Sicherheit durch Einschränkung

CSP ist eine der wirksamsten Schutzmaßnahmen gegen XSS. Sie definieren, welche Ressourcen Ihre Website laden darf – alles andere wird blockiert.

Was ist CSP?

Content Security Policy ist ein HTTP-Header, der dem Browser mitteilt, aus welchen Quellen Skripte, Styles, Bilder etc. geladen werden dürfen.

Content-Security-Policy: default-src 'self'; script-src 'self' https://cdn.example.com

Grundlegende Direktiven

Direktive Beschreibung
default-src Fallback für alle anderen
script-src JavaScript-Quellen
style-src CSS-Quellen
img-src Bild-Quellen
font-src Font-Quellen
connect-src Fetch, XHR, WebSocket
media-src Audio, Video
object-src Plugins (Flash etc.)
frame-src Erlaubte iframes
frame-ancestors Wer darf diese Seite einbetten
base-uri Basis-URL einschränken
form-action Formular-Ziele

Quellen-Werte

Wert Bedeutung
'self' Gleiche Origin
'none' Nichts erlaubt
'unsafe-inline' Inline-Skripte/Styles (vermeiden!)
'unsafe-eval' eval() erlauben (vermeiden!)
'nonce-xyz' Skripte mit diesem Nonce erlauben
'sha256-...' Skripte mit diesem Hash erlauben
https: Alle HTTPS-Quellen
data: Data-URLs
blob: Blob-URLs

Beispiel-Policies

Restriktiv (empfohlen)

Content-Security-Policy:
  default-src 'self';
  script-src 'self';
  style-src 'self';
  img-src 'self' data: https:;
  font-src 'self';
  connect-src 'self' https://api.example.com;
  frame-ancestors 'none';
  base-uri 'self';
  form-action 'self';

Mit CDN und Analytics

Content-Security-Policy:
  default-src 'self';
  script-src 'self' https://cdn.jsdelivr.net https://www.google-analytics.com;
  style-src 'self' 'unsafe-inline' https://fonts.googleapis.com;
  img-src 'self' data: https://www.google-analytics.com;
  font-src 'self' https://fonts.gstatic.com;
  connect-src 'self' https://www.google-analytics.com;

Mit Nonce für Inline-Scripts

<?php
$nonce = base64_encode(random_bytes(16));
header("Content-Security-Policy: script-src 'self' 'nonce-$nonce'");
?>

<!-- Erlaubt (mit Nonce) -->
<script nonce="<?= $nonce ?>">
  console.log('Erlaubt!');
</script>

<!-- Blockiert (ohne Nonce) -->
<script>
  console.log('Blockiert!');
</script>

CSP in Nginx

add_header Content-Security-Policy "default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data: https:; font-src 'self'; frame-ancestors 'none';" always;

CSP in Apache

Header always set Content-Security-Policy "default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data: https:; frame-ancestors 'none';"

Report-Only Modus (Testen)

Testen Sie CSP ohne zu blockieren:

Content-Security-Policy-Report-Only:
  default-src 'self';
  report-uri /csp-report;
  report-to csp-endpoint;

Report-Endpoint

<?php
// /csp-report Endpoint
$data = file_get_contents('php://input');
$report = json_decode($data, true);
error_log('CSP Violation: ' . json_encode($report));

Weitere Security Headers

# Komplettes Security-Header-Set
Content-Security-Policy: default-src 'self'; frame-ancestors 'none'
X-Frame-Options: DENY
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Referrer-Policy: strict-origin-when-cross-origin
Permissions-Policy: geolocation=(), microphone=(), camera=()

Nginx komplett

add_header Content-Security-Policy "default-src 'self';" always;
add_header X-Frame-Options "DENY" always;
add_header X-Content-Type-Options "nosniff" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
add_header Permissions-Policy "geolocation=(), microphone=(), camera=()" always;

Häufige Probleme

❌ Häufige CSP-Fehler:
  • 'unsafe-inline' überall – macht CSP nutzlos
  • Vergessen, CDNs hinzuzufügen
  • Inline Event-Handler (onclick) blockiert
  • Google Fonts/Analytics vergessen

Inline Events ersetzen

<!-- ❌ Blockiert durch CSP -->
<button onclick="doSomething()">Klick</button>

<!-- ✅ Funktioniert mit CSP -->
<button id="myButton">Klick</button>
<script>
  document.getElementById('myButton').addEventListener('click', doSomething);
</script>
💡 Tipp: Testen Sie Ihre Security Headers mit dem Enjyn Domain Toolkit oder securityheaders.com.

Weitere Informationen

Enjix Beta

Enjyn AI Agent

Hallo 👋 Ich bin Enjix — wie kann ich dir helfen?
120