Manifest – Content Security Policy

Ein optionaler Manifestschlüssel mit einer Content Security Policy für die Webplattform, in der Einschränkungen für Skripts, Stile und andere Ressourcen festgelegt sind, die eine Erweiterung verwenden kann. Innerhalb dieses Manifestschlüssels können separate optionale Richtlinien sowohl für Erweiterungsseiten als auch für Erweiterungsseiten definiert werden, die in einer Sandbox ausgeführt werden.

Die „Erweiterungsseiten“ gilt für Seiten- und Worker-Kontexte in der Erweiterung. Dazu gehören das Pop-up der Erweiterung, die Hintergrund-Worker und Tabs mit HTML-Seiten oder iFrames, die von der Erweiterung geöffnet wurden. Die Sandbox-Richtlinie gilt für alle Seiten, die im Manifest als Sandbox-Seite angegeben sind.

Standardrichtlinie

Wenn der Nutzer die Content Security Policy nicht im Manifest definiert hat, werden die Standardeigenschaften sowohl für Erweiterungsseiten als auch für Erweiterungsseiten verwendet, die in einer Sandbox ausgeführt werden.

Diese Standardeinstellungen entsprechen der Angabe der folgenden Richtlinien in deinem Manifest:

{
  // ...
  "content_security_policy": {
    "extension_pages": "script-src 'self'; object-src 'self';",
    "sandbox": "sandbox allow-scripts allow-forms allow-popups allow-modals; script-src 'self' 'unsafe-inline' 'unsafe-eval'; child-src 'self';"
  }
  // ...
}

In diesem Fall lädt die Erweiterung nur lokale Skripts und Objekte aus ihren eigenen gepackten Ressourcen. WebAssembly wird deaktiviert und die Erweiterung führt kein Inline-JavaScript aus und kann Strings nicht als ausführbaren Code bewerten. Wenn eine Sandbox-Seite hinzugefügt wird, verfügt sie über gelockerte Berechtigungen zur Auswertung von Skripts außerhalb der Erweiterung.

Mindestanforderungen und benutzerdefinierte Content Security-Richtlinien

Entwickler können Regeln für ihre Erweiterung hinzufügen oder entfernen oder die mindestens erforderlichen Content Security Policy verwenden, um die Anforderungen ihres Projekts zu erfüllen.

Richtlinie für Erweiterungsseiten

Chrome erzwingt für Erweiterungsseiten eine Mindestrichtlinie zur Inhaltssicherheit. Dies entspricht der Angabe der folgenden Richtlinie in deinem Manifest:

{
  // ...
  "content_security_policy": {
    "extension_pages": "script-src 'self' 'wasm-unsafe-eval'; object-src 'self';"
  }
  // ...
}

Die Richtlinie „extension_pages“ kann nicht über diesen Mindestwert hinaus gelockert werden. Mit anderen Worten: Sie können keine anderen Skriptquellen zu Anweisungen hinzufügen, z. B. 'unsafe-eval' zu script-src hinzufügen. Wenn Sie der Richtlinie Ihrer Erweiterung eine unzulässige Quelle hinzufügen, gibt Chrome bei der Installation einen Fehler wie den folgenden aus:

'content_security_policy.extension_pages': Insecure CSP value "'unsafe-eval'" in directive 'script-src'.

Richtlinie für Sandbox-Seiten

Die Standardrichtlinie für Seiten, die in einer Sandbox ausgeführt werden, ist weitaus weniger streng als bei Erweiterungsseiten, da die Sandbox-Seite keinen Zugriff auf Erweiterungs-APIs oder direkten Zugriff auf Seiten ohne Sandbox hat. Die Sandbox Content Security Policy kann nach Bedarf angepasst werden.