Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

content_security_policy

Typ String
Erforderlich Nein
Manifest-Version 2 oder höher
Beispiel Manifest V2:
json
"content_security_policy": "default-src 'self'"
Manifest V3:
json
"content_security_policy": {
  "extension_pages": "default-src 'self'"
}

Erweiterungen haben standardmäßig eine Content Security Policy (CSP) zugewiesen. Die Standardrichtlinie schränkt die Quellen ein, von denen Erweiterungen Code laden können (wie <script> Ressourcen) und verbietet potenziell unsichere Praktiken wie die Verwendung von eval(). Siehe Standard-Content-Sicherheitsrichtlinie, um mehr über die Auswirkungen dieser zu erfahren.

Sie können den Manifest-Schlüssel "content_security_policy" verwenden, um die Standardrichtlinie zu lockern oder zu verschärfen. Dieser Schlüssel wird auf die gleiche Weise spezifiziert wie der HTTP-Header Content-Security-Policy. Siehe Verwendung von Content-Security-Policy für eine allgemeine Beschreibung der CSP-Syntax.

Zum Beispiel können Sie diesen Schlüssel verwenden, um:

  • Zugelassene Quellen für andere Arten von Inhalten wie Bilder und Stylesheets mit der entsprechenden Richtliniendirektive einzuschränken.
  • Der Erweiterung erlauben, WebAssembly zu nutzen, indem die Quelle 'wasm-unsafe-eval' in die script-src-Direktive aufgenommen wird.
  • Die Standardrichtlinien script-src (nur Manifest V2) lockern:

Es gibt Einschränkungen bezüglich der Richtlinie, die Sie mit diesem Manifest-Schlüssel spezifizieren können:

  • Die script-src-Direktive muss mindestens das 'self'-Schlüsselwort enthalten und darf nur sichere Quellen enthalten. Der Satz zugelassener sicherer Quellen unterscheidet sich zwischen Manifest V2 und Manifest V3.
  • Die Richtlinie darf default-src alleine beinhalten (ohne script-src), wenn ihre Quellen die Anforderungen für die script-src-Direktive erfüllen.
  • Das object-src-Schlüsselwort könnte erforderlich sein, siehe object-src-Direktive für Details.
  • Direktiven, die auf Code verweisen – script-src, script-src-elem, worker-src und default-src (falls als Fallback verwendet) – teilen die gleiche Anforderung für sichere Quellen. Es gibt keine Einschränkungen für CSP-Direktiven, die nicht Skript-Inhalte betreffen, wie img-src.

In Manifest V3 sind alle CSP-Quellen, die sich auf externe oder nicht-statische Inhalte beziehen, in CSP-Direktiven, die Skript-Inhalte betreffen, verboten. Die einzigen zugelassenen Werte sind 'none', 'self' und 'wasm-unsafe-eval'. Es gibt eine Ausnahme für Skripte von localhost während der Entwicklung; siehe Skripte von localhost in der Content Security Policy für mehr Informationen.

In Manifest V2 gilt eine Quelle für eine Skript-Direktive als sicher, wenn sie diesen Kriterien entspricht:

  • Platzhalter-Hosts sind nicht erlaubt, wie "script-src 'self' *".
  • Entfernte Quellen müssen https:-Schemata verwenden.
  • Entfernte Quellen dürfen keine Platzhalter für Domains in der Public Suffix Liste verwenden (so dass *.co.uk und *.blogspot.com nicht erlaubt sind, obwohl *.foo.blogspot.com erlaubt ist).
  • Alle Quellen müssen einen Host angeben.
  • Die einzigen erlaubten Schemata für Quellen sind blob:, filesystem:, moz-extension:, https: und wss:.
  • Die einzigen erlaubten Schlüsselwörter sind: 'none', 'self', 'unsafe-eval' und 'wasm-unsafe-eval'.

objekt-src-Direktive

Die object-src-Direktive kann in einigen Browsern erforderlich sein, die veraltete Plugins unterstützen und sollte, falls benötigt, auf eine sichere Quelle wie 'none' gesetzt werden. Dies könnte für Browser bis 2022 notwendig sein.

  • In Firefox ist "object-src" ab Firefox 106 optional. In früheren Versionen wird, falls "object-src" nicht spezifiziert ist, "content_security_policy" ignoriert und die Standard-CSP verwendet.
  • In Chrome ist "object-src" erforderlich. Wenn es fehlt oder als unsicher angesehen wird, wird die Standardeinstellung ("object-src 'self'") verwendet und eine Warnmeldung protokolliert.
  • In Safari gibt es keine Anforderung für "object-src".

Siehe W3C WebExtensions Community Group Problem 204, Entfernen von object-src aus der CSP, für weitere Informationen.

Manifest V2-Syntax

In Manifest V2 wird eine Content-Sicherheitsrichtlinie gegen den Schlüssel wie folgt festgelegt:

json
"content_security_policy": "default-src 'self'"

Manifest V3-Syntax

In Manifest V3 ist der Key content_security_policy ein Objekt, das eine beliebige dieser Eigenschaften haben kann, die alle optional sind:

Name Typ Beschreibung
extension_pages String Die Content-Sicherheitsrichtlinie für Erweiterungsseiten. Die script-src und worker-src-Direktiven dürfen nur diese Werte haben:
  • 'self'
  • 'none'
  • 'wasm-unsafe-eval'
sandbox String Die Content-Sicherheitsrichtlinie für die sandboxed pages der Erweiterung.

Beispiele

Gültige Beispiele

Hinweis: Gültige Beispiele zeigen die korrekte Verwendung von Schlüsseln in CSP. Allerdings sind Erweiterungen mit 'unsafe-eval', entfernten Skripten, Blob oder entfernten Quellen in ihrer CSP nicht für Firefox-Erweiterungen erlaubt gemäß den Erweiterungsrichtlinien und aufgrund erheblicher Sicherheitsprobleme.

Hinweis: Einige Beispiele enthalten die object-src-Direktive, die Rückwärtskompatibilität für ältere Browserversionen bietet. Siehe object-src-Direktive für mehr Details.

Verlangen, dass alle Arten von Inhalten mit der Erweiterung verpackt sein sollten:

  • Manifest V2

    json
    "content_security_policy": "default-src 'self'"
    
  • Manifest V3

    json
    "content_security_policy": {
      "extension_pages": "default-src 'self'"
    }
    

Entfernte Skripte von "https://example.com" erlauben:

  • Manifest V2

    json
    "content_security_policy": "script-src 'self' https://example.com; object-src 'self'"
    
  • Manifest V3 erlaubt keine entfernten URLs in script-src von extension_pages.

Entfernte Skripte von beliebigen Subdomains von "jquery.com" erlauben:

  • Manifest V2

    json
    "content_security_policy": "script-src 'self' https://*.jquery.com; object-src 'self'"
    
  • Manifest V3 erlaubt keine entfernten URLs in script-src von extension_pages.

    json
    "content_security_policy": {
      "extension_pages": "script-src 'self' http://localhost:3000"
    }
    

    Allerdings können Skripte von localhost während der Entwicklung für nicht verpackte Erweiterungen aus Chrome 110 und temporär geladene Erweiterungen aus Firefox 147 erlaubt werden. Siehe Skripte von localhost in der Content Security Policy für mehr Informationen.

eval() und ähnliches erlauben:

  • Manifest V2

    json
    "content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self';"
    
  • Manifest V3 erlaubt 'unsafe-eval' nicht in script-src.

Das Inline-Skript erlauben: "<script>alert('Hello, world.');</script>":

  • Manifest V2

    json
    "content_security_policy": "script-src 'self' 'sha256-qznLcsROx4GACP2dm0UCKCzCG+HiZ1guq6ZZDob/Tng='; object-src 'self'"
    
  • Manifest V3 erlaubt keine CSP-Hashes in script-src von extension_pages.

Den Rest der Richtlinie beibehalten, aber auch verlangen, dass Bilder mit der Erweiterung verpackt sein sollten:

  • Manifest V2

    json
    "content_security_policy": "script-src 'self'; object-src 'self'; img-src 'self'"
    
  • Manifest V3

    json
    "content_security_policy": {
      "extension_pages": "script-src 'self'; img-src 'self'"
    }
    

Die Verwendung von WebAssembly aktivieren:

  • Manifest V2

    Für die Rückwärtskompatibilität können Manifest V2-Erweiterungen in Firefox WebAssembly ohne die Verwendung von 'wasm-unsafe-eval' verwenden. Dieses Verhalten ist jedoch nicht garantiert. Siehe Firefox-Bug 1770909. Erweiterungen, die WebAssembly verwenden, werden daher ermutigt, 'wasm-unsafe-eval' in ihrer CSP zu deklarieren. Weitere Informationen finden Sie unter WebAssembly auf der Content Security Policy-Seite.

    json
    "content_security_policy": "script-src 'self' 'wasm-unsafe-eval'"
    
  • Manifest V3

    json
    "content_security_policy": {
      "extension_pages": "script-src 'self' 'wasm-unsafe-eval'"
    }
    

Ungültige Beispiele

Richtlinie, die die "object-src"-Direktive auslässt:

json
"content_security_policy": "script-src 'self' https://*.jquery.com;"

Dies ist jedoch nur in Browsern ungültig, die veraltete Plugins unterstützen. Siehe object-src-Direktive für mehr Details.

Richtlinie, die das "self"-Schlüsselwort in der "script-src"-Direktive auslässt:

json
"content_security_policy": "script-src https://*.jquery.com; object-src 'self'"

Das Schema für eine entfernte Quelle ist nicht https:

json
"content_security_policy": "script-src 'self' http://code.jquery.com; object-src 'self'"

Platzhalter wird mit einer generischen Domain verwendet:

json
"content_security_policy": "script-src 'self' https://*.blogspot.com; object-src 'self'"

Quelle gibt ein Schema, aber keinen Host an:

json
"content_security_policy": "script-src 'self' https:; object-src 'self'"

Die Direktive enthält das nicht unterstützte Schlüsselwort 'unsafe-inline':

json
"content_security_policy": "script-src 'self' 'unsafe-inline'; object-src 'self'"

Browser-Kompatibilität