Home » Website Security » Content-Security-Policy (CSP): Wie Websites sicherer werden

Wie Websites sicherer werden: So funktioniert die Content-Security-Policy


Content-Security-Policy (CSP) Inhaltssicherheitsrichtlinie
Content-Security-Policy (CSP) Inhaltssicherheitsrichtlinie

Gerne unterstützen wir Sie bei der Implementierung einer individuellen Content-Security-Policy für Ihre Website. Sprechen Sie uns an→

Die CSP oder Inhaltssicherheitsrichtlinie bietet eine zusätzliche Sicherheitsebene

Die Content Security Policy (CSP), oder Inhaltssicherheitsrichtlinie, bietet eine zusätzliche Sicherheitsebene, die dazu beiträgt, bestimmte Arten von Angriffen wie Cross-Site Scripting (XSS) und Dateninjektionsangriffe zu erkennen und abzuwehren. Diese Angriffe können alles von Datendiebstahl bis zur Verunstaltung von Websites und der Verbreitung von Malware umfassen.

Hier geht’s zum Website-Sicherheitscheck →

Fast jede Seite im Internet verfügt über ein Eingabefeld, sei es für Kommentare, Suchleisten oder Logins, die Ziel für Angreifer sind. Mit der Content Security Policy können Webmaster festlegen, aus welchen Quellen Webbrowser Daten laden dürfen. Jegliches fremde Skript, das in den Code eingeschleust wurde, wird augenblicklich vom Browser des Nutzers blockiert.

CSP bietet eine robuste Sicherheitslösung, die sowohl den Webmaster als auch den Endbenutzer schützt. Durch die Implementierung einer individuellen Inhaltssicherheitsrichtlinie können Sie die Sicherheit Ihrer Website erheblich verbessern.

HTTP und HTTP-Header

Die Kommunikation im Internet erfolgt über das Hypertext Transfer Protocol (HTTP). Ein wichtiger Bestandteil des Datenverkehrs zwischen Server und Client sind HTTP-Header-Felder. Diese Felder können Informationen über den Zeichensatz, die Sprache und Cookies enthalten und sind in Anfrage- und Antwortfelder unterteilt. CSP wird als Antwort-Headerfeld implementiert und vom Server bereitgestellt.

Implementierung von CSP

Als Webmaster erstellen Sie den Content-Security-Policy-Header und fügen ihn auf jeder Unterseite Ihrer Website ein, wo er gelten soll. Dadurch können Sie unterschiedliche Sicherheitsmaßnahmen für jede Seite festlegen.

Schutz vor Cross-Site Scripting

Fast jede Seite im Internet verfügt über ein Eingabefeld, sei es für Kommentare, Suchleisten oder Logins. Diese Eingabefelder können leicht manipuliert werden, wenn der Server nicht ordnungsgemäß gesichert ist. Mit der CSP können Webmaster festlegen, aus welchen Quellen Webbrowser Daten laden dürfen. Versuche, eingeschleusten Code abzurufen, werden mit einer Fehlermeldung quittiert.

Praktische Anwendung

Wenn Sie als Webmaster eine Internet-Security-Policy einführen möchten, reicht es nicht, den modifizierten Header einzufügen. Sie müssen auch den Quellcode Ihrer Website überprüfen und anpassen.

Webmaster sollten alle Skripte in separate Dateien auslagern und nicht direkt im Quellcode der Website einbetten. CSP arbeitet nach dem Prinzip einer Whitelist, die die zugelassenen Quellen für Skripte und Daten festlegt. Jegliches fremde Skript, das in den Code eingeschleust wurde, wird vom Browser des Nutzers blockiert.

Erweiterte Einstellungen zur Content-Security-Policy

Über die Content-Security-Policy können Webmaster viele wichtige Einstellungen vornehmen, wie z.B. durch diese Direktiven:

  • base-uri: Beschränkt die URLs, die im <base>-Element der Webpage auftauchen dürfen
  • child-src: Legt fest, aus welchen Quellen Daten in Frames auftauchen dürfen, z. B. bei eingebetteten Videos von Drittanbietern.
  • connect-src: Beschränkt die Quellen, mit denen sich die Seite verbinden kann, z. B. über Links.
  • font-src: Bestimmt die Quellen, aus denen Schriftarten geladen werden dürfen.
  • form-action: Stellt eine Liste von gültigen Endpunkten in Formularen bereit.
  • frame-ancestors: Legt fest, welche Domains die Seite in Frames und iFrames einbauen dürfen.
  • img-src: Beschränkt die Quellen, aus denen Bilder geladen werden dürfen.
  • media-src: Legt fest, aus welchen Quellen Audio- und Video-Formate geladen werden dürfen.
  • object-src: Definiert die Kontrolle über Flash und andere Plug-ins.
  • plugin-types: Limitiert die Arten von Plug-ins.
  • report-uri: Spezifiziert eine URL, an die Berichte geschickt werden, wenn gegen die Sicherheitsmaßnahmen verstoßen wurde.
  • script-src: Bestimmt, welche Quellen für JavaScript erlaubt sind.
  • style-src: Funktioniert wie script-src, wird allerdings bei Stylesheets angewendet.
  • upgrade-insecure-requests: Legt fest, dass unsichere Seiten mit HTTP wie HTTPS-Seiten behandelt werden.
  • sandbox: Verschiebt die betreffende Seite in eine Sandbox, in der u. a. Formulare, Pop-ups und Skripte verboten sind.

Diese Direktiven gelten nur, wenn sie ausdrücklich gesetzt sind. Ansonsten stehen sie standardmäßig offen und stellen somit eine Sicherheitslücke dar.

Quellen lassen sich als Adressen, in ihrer Art oder auch als Wildcards eingeben. Folgende Eingaben sind zulässig:

  • script-src https://example.com:443 – Skripte sind nur von dieser Domain per HTTPS zulässig.
  • script-src ’none‘ – Skripte dürfen nicht geladen werden.
  • script-src ’self‘ – Skripte dürfen aus demselben Ursprung wie die aktuelle Seite geladen werden, nicht aber von Subdomains.
  • script-src https: – Skripte dürfen von jeglicher Domain geladen werden, solange sie mit HTTPS beginnt.
  • script-src example.com – Skripte dürfen von dieser Domain geladen werden.
  • script-src *.example.com – Skripte von dieser Domain und von allen Subdomains sind zulässig.
  • img-src data: – Bilder dürfen über Data-URLs geladen werden.

Eine Content-Security-Policy legt grundlegend fest, dass Skripte nur aus Dateien geladen werden dürfen, nicht direkt aus dem Code der Website. Möchten Sie dies umgehen, können Sie den Befehl script-src ‚unsafe-inline‘ verwenden. Es sollte Ihnen aber bewusst sein, dass Sie damit wiederum eine Sicherheitslücke schaffen.

Wenn Skripte nicht mehr im Code direkt auftauchen dürfen, müssen Sie für jedes Skript eine eigene Datei anlegen. Die Funktion des Skripts wird in eine .js-Datei ausgelagert. Auch Style-Elemente müssen Sie in gesonderte Stylesheets auslagern. 

Wenn Sie als Webmaster eine Internet-Security-Policy einführen möchten, reicht es nicht, den Header einzufügen. Sie müssen auch den Quellcode Ihrer Website überprüfen und anpassen.

Ein CSP ist eine zusätzliche Sicherheitsebene, die eine Website nutzen kann, um ihre Nutzer vor Cross-Site-Scripting und Dateninjektions-Angriffen zu schützen. Es funktioniert, indem es dem Browser mitteilt, welche Domains als gültige Quellen für Inhalte betrachtet werden sollten. Auf diese Weise werden eingeschleuste schädliche Skripte oder Bilder nicht ausgeführt oder angezeigt.

Cross-Site-Scripting-Angriff (XSS)

Ein XSS-Angriff kann passieren, wenn es einem Angreifer gelingt, Inhalte auf einer Website zu posten, die nicht bereinigt werden und dann dem Nutzer angezeigt werden. Ist dies der Fall, könnte schädlicher JavaScript-Code geladen werden. Dies könnte dazu verwendet werden, Informationen vom Nutzer zu stehlen, ihn zu verfolgen oder ihn auf andere Weise zu stören.

Dateninjektionsangriffe

Ein Dateninjektionsangriff ähnelt einem XSS-Angriff, nur dass anstelle von Code Bilder oder andere Inhalte angezeigt werden. Der Zweck könnte sein, Benutzer zu verfolgen, die Website unbrauchbar zu machen oder Benutzer dazu zu verleiten, unerwünschte Aktionen durchzuführen.

XSS-Angriff-Schutz

Ein gutes CSP kann Benutzer vor solchen Angriffen schützen, indem es verhindert, dass Inhalte aus nicht vertrauenswürdigen Quellen geladen werden. Beispielsweise könnte die CSP-Richtlinie Inline-JavaScript verbieten. Dies würde viele Arten von XSS-Angriffen eliminieren. Die CSP könnte auch festlegen, dass die Website die einzige gültige Quelle für Bilder ist, was einige Arten von Dateninjektionsangriffen verhindern würde.

Zusätzlich zur Überprüfung auf Syntaxfehler wird dieser Test auch die Verwendung von unsicheren Werten in Ihrer CSP-Richtlinie untersuchen. Zum Beispiel erlaubt der Wert „unsafe-inline“ das Ausführen aller Inline-Skripte, was dem Zweck einer CSP-Richtlinie widerspricht, da es XSS-Angriffe zulässt. Wenn Inline-Skripte für das Funktionieren der Website notwendig sind, wäre es besser, einen Nonce- oder Hash-Wert zu verwenden, um spezifische Skripte fallweise zu genehmigen.

GetSafe 360° Box

360° Website SecurityRundum-Absicherung

HTTP-Sicherheits-Header
Inhaltsicherheitsrichtlinie (CSP)
XSS-Absicherung
Ausführung i.d.R. innerhalb von 24 Std.
100% Geld-zurück-Garantie
Keine monatlichen Kosten

Wir schützen, was Ihnen wichtig ist.

Schlüsselfertige Absicherung:

Unsere Experten erledigen diese Aufgabe komplett für Sie.
Statt 245,- € jetzt zum Vorzugspreis von nur 195,- €

Jetzt Starten »