Content Security Policy

Falls Sie mit der Content Security Policy (CSP) nicht vertraut sind: Einführung in Content Security Richtlinien sind ein guter Ausgangspunkt. In diesem Dokument wird die allgemeine Sicht auf die Webplattform von CSP behandelt. Die CSP für Chrome-Apps ist nicht so flexibel.

CSP ist eine Richtlinie zur Vermeidung von websiteübergreifenden Skriptproblemen. Wir alle wissen, dass websiteübergreifende Scripting ist schlecht. Wir werden Sie nicht davon überzeugen, dass die CSP eine „warme und ungenaue neue Richtlinie“ ist. Es ist viel Arbeit erforderlich: müssen Sie lernen, wie Sie grundlegende Aufgaben anders erledigen können.

In diesem Dokument wird erläutert, was die CSP-Richtlinie für Chrome-Apps ist, was Sie was Sie tun müssen, um sie einzuhalten, und wie Sie diese grundlegenden Aufgaben CSP-konform.

Was ist die CSP für Chrome-Apps?

Die Content Security Policy für Chrome-Apps schränkt Folgendes ein:

  • Sie können auf Ihren Chrome-App-Seiten kein Inline-Scripting verwenden. Die Einschränkung verbietet beide <script>-Blöcke und Event-Handler (<button onclick="...">).
  • Sie können in keiner Ihrer App-Dateien auf externe Ressourcen verweisen, mit Ausnahme von Video- und Audiodateien Ressourcen). Sie können keine externen Ressourcen in einen iFrame einbetten.
  • Sie können keine String-zu-JavaScript-Methoden wie eval() und new Function() verwenden.

Dies wird über den folgenden Richtlinienwert implementiert:

default-src 'self';
connect-src * data: blob: filesystem:;
style-src 'self' data: 'unsafe-inline';
img-src 'self' data:;
frame-src 'self' data:;
font-src 'self' data:;
media-src * data: blob: filesystem:;

Ihre Chrome-App kann nur auf Skripts und Objekte innerhalb Ihrer App verweisen, mit Ausnahme von Medien -Dateien (Apps können auf Video und Audio außerhalb des Pakets verweisen). Chrome-Erweiterungen zum Entspannen die standardmäßige Content Security Policy Chrome-Apps hingegen nicht.

CSP einhalten

Alle JavaScript-Ressourcen und Ressourcen sollten lokal sein, d. h. alles wird in Ihrer Chrome-App gepackt.

„Aber wie kann ich...“

Es ist sehr möglich, dass Sie Vorlagenbibliotheken verwenden, von denen viele nicht mit der CSP funktionieren. Sie können auch auf externe Ressourcen in Ihrer App zugreifen, z. B. auf externe Bilder oder Inhalte von Websites.

Vorlagenbibliotheken verwenden

Nutzen Sie einfach eine Bibliothek, die vorkompilierte Vorlagen bietet. Sie können weiterhin eine Bibliothek verwenden, bietet keine Vorkompilierung an, erfordert aber einige Schritte von Ihrer Seite und es gibt Einschränkungen.

Sie müssen die Sandboxing-Technologie verwenden, um alle Inhalte zu isolieren, die Sie „evaluieren“ möchten. zu finden. Sandboxing verbessert die CSP bei den von Ihnen angegebenen Inhalten. Wenn Sie das leistungsstarke Chrome- APIs in Ihrer Chrome-App können Ihre in der Sandbox ausgeführten Inhalte nicht direkt mit diesen APIs interagieren (siehe Lokale Inhalte in Sandbox).

Auf Remote-Ressourcen zugreifen

Sie können Remote-Ressourcen über XMLHttpRequest abrufen und über blob:, data: oder filesystem:-URLs (siehe Auf externe Ressourcen verweisen).

Video- und Audioinhalte können über Remote-Dienste geladen werden, da sie ein gutes Fallback-Verhalten haben, wenn oder die Internetverbindung ist schlecht.

Webinhalte einbetten

Anstatt einen iFrame zu verwenden, können Sie mithilfe eines WebView-Tags eine externe URL aufrufen (siehe Einbetten externen Webseiten).