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

View in English Always switch to English

Implementierung der Cross-Origin Resource Policy (CORP)

Die Cross-Origin Resource Policy (CORP) wird über den Antwort-Header Cross-Origin-Resource-Policy festgelegt. Damit können Websites und Anwendungen einen Schutz vor Sicherheitslücken aktivieren, die mit bestimmten Cross-Origin-Anfragen zusammenhängen, etwa solchen durch die Elemente <script> und <img>. CORP bietet eine zusätzliche Schutzebene über die standardmäßige Same-Origin-Policy hinaus.

Problem

Standardmäßig verhindert die Same-Origin-Policy, dass Skripte Cross-Origin-Antworten direkt lesen, und schützt so vor der Offenlegung von Nutzerdaten auf der Website, die die Ressource bereitstellt. Einige hardwarebasierte Seitenkanal-Sicherheitslücken, insbesondere Spectre, nutzen jedoch die spekulative Ausführung moderner Prozessoren aus, um sensible Daten offenzulegen, sobald die Antwortbytes in den Speicher der einbettenden Seite gelangen. Darüber hinaus ermöglichen Cross-Site Script Inclusion-Angriffe (XSSI), mithilfe herkömmlicher <script>-Elemente Cross-Origin-Daten zu erlangen. Daher können selbst Kanäle unsicher sein, die traditionell als sicher für die Cross-Origin-Einbettung gelten und deshalb keine Mitwirkung des Ressourcenanbieters erfordern.

Lösung

Verwenden Sie Cross-Origin-Resource-Policy für die Ressource, um Cross-Origin-Anfragen im Modus no-cors zu blockieren. Solche Anfragen werden von bestimmten APIs und Elementen standardmäßig gesendet, insbesondere von <script>- und <img>-Elementen. Da diese Richtlinie durch einen Antwort-Header ausgedrückt wird, wird die eigentliche Anfrage nicht verhindert. Stattdessen verhindert der Browser die Offenlegung des Ergebnisses, indem er die Antwort in einen Netzwerkfehler umwandelt.

Folgende Werte sind möglich:

same-origin

Beschränkt den Zugriff auf die Ressource auf Anfragen desselben Origin. Dies wird für URLs empfohlen, die sensible Nutzerinformationen zurückgeben, sowie für private APIs.

same-site

Beschränkt den Zugriff auf die Ressource auf Anfragen derselben Site. Dies wird für Antworten von Origins empfohlen, deren Funktionalität von mehreren anderen Origins derselben Site genutzt wird. Beispiele sind ein Unternehmens-CDN, das statische Ressourcen bereitstellt, und eine Single-Sign-on-Anwendung (SSO), die die Authentifizierung übernimmt.

Warnung: Dies ist weniger restriktiv als same-origin. Der Algorithmus zur Prüfung, ob zwei Origins derselben Site angehören, ist im HTML-Standard definiert und prüft unter anderem die registrierbare Domain.

cross-origin

Erlaubt Cross-Origin-Anfragen den Zugriff auf Ressourcen. Dies wird nur für Antworten von breit genutzten Origins empfohlen, beispielsweise öffentlichen CDNs oder Widgets. Wenn der Header nicht gesetzt ist, ist dies das Standardverhalten. Der Wert muss jedoch ausdrücklich gesetzt werden, damit eine einbettende Seite mit einer restriktiven Cross-Origin-Embedder-Policy die Ressource einbetten kann.

Legen Sie für Ihre Website den restriktivsten möglichen Wert fest.

CORP wird vom Ressourcenanbieter bereitgestellt. Wenn Sie solche Cross-Origin-Ressourcen einbetten, können Sie Ihr Dokument mit einem Cross-Origin-Embedder-Policy-Header mit dem Wert require-corp ausliefern. Der Browser verhindert dann, dass das Dokument Cross-Origin-Ressourcen lädt, die nicht ausdrücklich einen Cross-Origin-Resource-Policy-Header senden, der die Einbettung erlaubt. Dies ist ein Schritt, um Ihre Website Cross-Origin-isoliert zu machen.

Beispiele

Den Ressourcenanbieter absichern

Wenn eine Ressource nicht im Modus no-cors über Origin-Grenzen hinweg geladen werden darf, sollte ihre Antwort Folgendes enthalten:

http
Cross-Origin-Resource-Policy: same-origin

Die einbettende Seite Cross-Origin-isoliert machen

Um SharedArrayBuffer und hochpräzise Aufrufe von Performance.now() zu ermöglichen, muss das Dokument Cross-Origin-isoliert sein. Fügen Sie dem Dokument die folgenden Header hinzu:

http
Cross-Origin-Opener-Policy: same-origin
Cross-Origin-Embedder-Policy: require-corp

Eine Seite, die Cross-Origin-Embedder-Policy: require-corp verwendet, darf nur Cross-Origin-Ressourcen laden, die ihre Einbettung ausdrücklich erlauben. Ressourcen können dies durch eine explizite CORP-Angabe tun:

http
Cross-Origin-Resource-Policy: cross-origin

Verwenden Sie für Anfragen mit Cross-Origin Resource Sharing (CORS) stattdessen Access-Control-Allow-Origin:

http
Access-Control-Allow-Origin: https://example.com

Siehe auch