Was ist CSP (Content Security Policy)?

Februar 15, 2025

CSP, die Abkürzung für Content Security Policy (Inhalts Sicherheitsrichtlinie), ist eine zusätzliche Sicherheitsebene für Websites, die entwickelt wurde, um gängige Angriffe wie Cross-Site-Scripting (XSS) und Injection-Angriffe zu erkennen und zu verhindern. Im Wesentlichen fungiert CSP als Whitelist, die die erlaubten Quellen für Skripte, Styles, Bilder und Frames auf der Website festlegt. Dies stellt sicher, dass nur explizit angegebene Ressourcen geladen werden können. Alle Anfragen, die nicht in der Whitelist enthalten sind, werden sofort blockiert. Browser, die CSP nicht unterstützen, funktionieren weiterhin normal mit einem Server, der CSP implementiert, und umgekehrt. Falls ein Browser CSP nicht unterstützt, wird die Richtlinie ignoriert und die Website wendet die Standardrichtlinie an.

CSP funktioniert durch Hinzufügen des HTTP-Headers Content-Security-Policy zur Serverantwort. Dieser Header enthält eine Reihe von Direktiven, die festlegen, welche Art von Inhalten von welchen Quellen geladen werden dürfen. Beispielsweise legt die Direktive script-src die erlaubten Quellen für JavaScript-Dateien fest.

Es gibt verschiedene Direktiven in CSP, die jeweils eine bestimmte Art von Ressource steuern. Einige gängige Direktiven sind:

  • default-src: Gilt für alle Ressourcentypen, wenn keine spezifische Direktive definiert ist.
  • script-src: Steuert das Laden von JavaScript-Dateien.
  • style-src: Steuert das Laden von CSS-Dateien.
  • img-src: Steuert das Laden von Bildern.
  • font-src: Steuert das Laden von Schriftarten.
  • frame-src: Steuert das Laden von Iframes.
  • object-src: Steuert das Laden von eingebetteten Objekten wie Flash.
  • media-src: Steuert das Laden von Mediendateien wie Audio und Video.

Jede Direktive kann einen oder mehrere Werte annehmen, darunter:

  • 'self': Erlaubt das Laden von Ressourcen vom gleichen Ursprung wie die Website.
  • 'none': Erlaubt das Laden keiner Ressourcen.
  • 'unsafe-inline': Erlaubt die Verwendung von Inline-Code wie <script> oder Inline-Styles. Dieser Wert sollte jedoch nicht verwendet werden, da er die Sicherheit von CSP reduziert.
  • Eine bestimmte URL: Erlaubt das Laden von Ressourcen von der angegebenen URL.
  • Eine Domain: Erlaubt das Laden von Ressourcen von allen Subdomains der angegebenen Domain. Beispiel: example.com erlaubt das Laden von Ressourcen von www.example.com, sub.example.com usw.
  • *: Wildcard, erlaubt das Laden von Ressourcen von jeder Quelle. Dieser Wert sollte nicht verwendet werden, da er die meisten Sicherheitsfunktionen von CSP deaktiviert.
  • data:: Erlaubt das Laden von Ressourcen von Data-URIs.
  • https:: Erlaubt das Laden von Ressourcen von jeder Quelle, die HTTPS verwendet.

Beispiel für eine einfache CSP:

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

Diese CSP erlaubt:

  • Das Laden aller Ressourcentypen (außer Bildern und Skripten) vom gleichen Ursprung wie die Website.
  • Das Laden von Bildern vom gleichen Ursprung oder von Data-URIs.
  • Das Laden von Skripten vom gleichen Ursprung oder von https://example.com.

Um CSP-Verstöße zu überwachen, können Sie die Direktive report-uri oder report-to verwenden. Diese Direktive ermöglicht es dem Browser, Berichte über CSP-Verstöße an eine angegebene URL zu senden. Dienste wie report-uri.com bieten eine Oberfläche zum Sammeln und Analysieren dieser Berichte, damit Sie die Sicherheitslücken Ihrer Website besser verstehen können.

Die korrekte Implementierung von CSP kann das Risiko von XSS- und Injection-Angriffen erheblich reduzieren und Ihre Website und Ihre Benutzer vor Cyber-Bedrohungen schützen.

Leave A Comment

Kategorien

Recent Posts

Create your account