Das Response-Header-Feld der Content Security Policy ist ein Tool zum Implementieren eines Defense-in-Depth-Mechanismus zum Schutz von Daten vor Content-Injection-Schwachstellen wie Cross-Scripting-Angriffen. Es bietet einen Richtlinienmechanismus, der es Entwicklern ermöglicht, die in ihrer Anwendung vorhandenen Fehler zu erkennen und Anwendungsberechtigungen zu reduzieren. Es bietet Entwicklern die Kontrolle über die Anwendung auf granularer Ebene, um verschiedene Angriffe zu verhindern und die Inhaltsintegrität zu wahren.

Syntax:

Inhaltssicherheitsrichtlinie : Anweisung Anweisungswert ; Direktive Direktive-Wert

Das obige hat die Direktive und den Direktivenwert . Mehrere Richtlinienanweisungen können in einer durch Semikolon getrennten Zeile verwendet werden.

Richtlinien mit Beispielen:

1. Abrufanweisungen: Diese werden verwendet, um den Punkt zu steuern, von dem aus auf eine bestimmte Ressource zugegriffen oder in das System geladen werden kann.

  • child-src: Es steuert die Erstellung von verschachteltem Browsing-Kontext und Requestsn, die den Frame eines Workers füllen.
    Inhaltssicherheitsrichtlinie: child-src https://example.com/
  • default-src: Wird verwendet, um unter Berücksichtigung des eingegebenen Werts als Standardquellliste für Richtlinien zu dienen, und dient als Fallback für andere Abrufanweisungen.
    Inhaltssicherheitsrichtlinie: default-src 'self'
  • frame-src: Es schränkt URLs ein, die für verschachtelten Browsing-Kontext geladen werden.
    Inhaltssicherheitsrichtlinie: frame-src https://example.com/
  • manifest-src: Es steuert die URLs, von denen verschiedene Elemente einer Ressource geladen werden können.
    Inhaltssicherheitsrichtlinie: manifest-src https://example.com/
  • object-src: Es wird verwendet, um URLs einzuschränken, die Plugin-Inhalte in die Anwendung laden können.
    Inhaltssicherheitsrichtlinie: object-src https://example.com/
  • connect-src: Es wird verwendet, um URLs zu steuern, die über Skriptschnittstellen in Anwendungen geladen werden können.
    Inhaltssicherheitsrichtlinie: connect-src https://example.com/
  • font-src: Es steuert URLs, die Schriftarten in die Anwendung laden können.
    Inhaltssicherheitsrichtlinie: font-src https://example.com/
  • img-src: Es steuert URLs, die Bilder in die Anwendung laden können.
    Inhaltssicherheitsrichtlinie: img-src https://example.com/
  • media-src: Es steuert URLs, die Audio-, Video- und zugehörige Textspurressourcen in die Anwendung laden können.
    Inhaltssicherheitsrichtlinie: media-src https://example.com/
  • style-src: Es steuert Quellen, die Load anwenden und Stylesheet auf eine Anwendung anwenden können.
  • script-src: Es steuert Quellen, die JavaScript in die Anwendung implementieren können.
  • Einige Fetch-Direktiven sind experimentelle Anwendungsprogrammierschnittstellen wie prefetch-src, script-src-elem, script-src-attr, style-src-elem, style-src-attr und worker-src.

2. Dokumentdirektiven: Diese Direktiven steuern die Implementierung von Eigenschaften in allen Dokumenten und Arbeitsumgebungen, die unter die Verwaltung von CSP fallen.

  • Plugin-Typen: Es begrenzt die geladenen Ressourcen, um die Möglichkeit einzuschränken, Plugins in ein Dokument einzubetten.
    Inhaltssicherheitsrichtlinie: Plugin-Typen application/pdf
  • base-uri: Es steuert die URLs, die in das im Dokument vorhandene Basiselement geladen werden können .
  • sandbox: Die HTML-Sandbox-Richtlinie kann vom Benutzeragenten über die Spezifikationen dieser Anweisung angewendet werden.

3. Navigationsdirektiven enthalten Form-Action-, Frame-Ahnen- und Navigieren-zu- Direktiven. Die Form-Action- Direktive steuert URLs, die für die Formularübermittlung verwendet werden können. Die frame-ancestors- Direktive schränkt URLs ein, die die Ressource mithilfe von frame-, iframe-, object-, embed- oder applet - Elementen einbetten können. Die Direktive „ navigiere zu “ gibt die URLs an, zu denen das Dokument über eine beliebige Methode traversieren kann.

4. Reporting Directives enthält report-to , das den Endpunkt angibt, an dem Verstoßberichte gesendet werden. Das früher verwendete report-uri ist jetzt veraltet.

Noch ein paar Beispiele:

Alle Beispiele in diesem Artikel wurden dem CSP Level 3 Draft des World Wide Web Consortium entnommen.

Content-Security-Policy: script-src https://cdn.example.com/scripts/; object-src 'none'
Content-Security-Policy: script-src 'self'; report-to csp-reporting-endpoint
Content-Security-Policy: prefetch-src https://example.com/
Content-Security-Policy: worker-src https://example.com/
Content-Security-Policy: navigate-to example.com

Browser-Kompatibilität:

CSP Level 3 wird teilweise von den Versionen Chrome 59+, Firefox 58+ und Edge 79+ unterstützt.
CSP Level 2 wird vollständig von den Versionen Chrome 40+, Safari 10+, Edge 76+ und teilweise von Firefox 31+ und Edge 15+ unterstützt.
CSP Level 1 wird von den Versionen Chrome 25+, Firefox 23+, Edge 12+ und Safari 7+ vollständig unterstützt.