Zum Inhalt springen
_CORE
KI & Agentensysteme Unternehmensinformationssysteme Cloud & Platform Engineering Datenplattform & Integration Sicherheit & Compliance QA, Testing & Observability IoT, Automatisierung & Robotik Mobile & Digitale Produkte Banken & Finanzen Versicherungen Öffentliche Verwaltung Verteidigung & Sicherheit Gesundheitswesen Energie & Versorgung Telko & Medien Industrie & Fertigung Logistik & E-Commerce Retail & Treueprogramme
Referenzen Technologien Blog Know-how Tools
Über uns Zusammenarbeit Karriere
CS EN DE
Lassen Sie uns sprechen

Content Security Policy (CSP) — Ein praktischer Leitfaden

15. 10. 2022 Aktualisiert: 27. 03. 2026 1 Min. Lesezeit intermediate
Dieser Artikel wurde veröffentlicht im Jahr 2022. Einige Informationen können veraltet sein.

CSP teilt dem Browser mit, von wo er Skripte, Styles, Bilder und andere Ressourcen laden darf. Ein korrekt konfigurierter CSP stoppt die meisten XSS-Angriffe, denn selbst wenn ein Angreifer ein schaedliches Skript in die Seite injiziert, weigert sich der Browser, es auszufuehren, wenn es nicht zur Policy passt. CSP ist die wirksamste Verteidigung gegen XSS nach der Eingabebereinigung — und im Gegensatz zur Bereinigung funktioniert es auch gegen Zero-Day-Schwachstellen.

Grundlegender CSP

Content-Security-Policy:
  default-src 'self';
  script-src 'self' 'nonce-abc123';
  style-src 'self' 'unsafe-inline';
  img-src 'self' data: https:;
  connect-src 'self' https://api.example.com;
  frame-ancestors 'none';

Jede Direktive definiert erlaubte Quellen fuer einen bestimmten Inhaltstyp. default-src 'self' erlaubt nur Ressourcen vom eigenen Ursprung. script-src mit Nonce erlaubt nur Skripte mit entsprechendem Nonce-Attribut. frame-ancestors 'none' verhindert das Einbetten der Seite in einen iframe (Clickjacking-Schutz).

Nonce-basierter CSP

import secrets

@app.after_request
def add_csp(response):
    nonce = secrets.token_urlsafe(32)
    response.headers['Content-Security-Policy'] = f"script-src 'self' 'nonce-{nonce}'"
    return response

Ein Nonce (Number Used Once) ist ein Zufallswert, der fuer jeden Request generiert wird. Jedes legitime <script>-Tag erhaelt ein nonce="abc123"-Attribut und CSP erlaubt nur Skripte mit passendem Nonce. Ein injiziertes Skript ohne korrektes Nonce wird nicht ausgefuehrt. Nonces sind sicherer als hash-basierte Ansaetze, da sie den Skriptinhalt nicht im Voraus kennen muessen.

Schrittweise Einfuehrung

  1. Report-Only mit permissiver Policy — erfahren Sie, was CSP blockieren wuerde
  2. Berichte analysieren — identifizieren Sie legitime Quellen und Inline-Skripte
  3. Policy verschaerfen — entfernen Sie unnoetige Quellen
  4. Auf Enforcement umschalten — CSP beginnt zu blockieren
  5. Berichte ueberwachen — erkennen Sie neue Quellen und potenzielle Angriffe

Die Einfuehrung von CSP ohne Report-Only-Phase bricht typischerweise die Anwendung. Ein Reporting-Endpoint (report-uri oder report-to) sammelt Informationen ueber blockierte Ressourcen und ermoeglicht iteratives Verschaerfen der Policy.

Wichtigste Erkenntnis

CSP ist die wirksamste Verteidigung gegen XSS. Beginnen Sie mit Report-Only, verschaerfen Sie schrittweise und ueberwachen Sie Berichte. Nonce-basierter CSP ist der empfohlene Ansatz fuer moderne Anwendungen.

securitycspxssheaders
Teilen:

CORE SYSTEMS Team

Wir bauen Kernsysteme und KI-Agenten, die den Betrieb am Laufen halten. 15 Jahre Erfahrung mit Enterprise-IT.