Implementierung der Cross-Origin Resource Policy (CORP)

Die Cross-Origin Resource Policy (CORP) wird durch den Cross-Origin-Resource-Policy Antwort-Header gesetzt, der es Websites und Anwendungen ermöglicht, sich gegen Schwachstellen im Zusammenhang mit bestimmten Cross-Origin-Anfragen zu schützen (wie sie z.B. von den <script> und <img> Elementen gemacht werden).

Problem

Einige Hardware-Schwachstellen im Seitenkanal (auch bekannt als Cross-site leaks oder XS-Leaks), wie Meltdown und Spectre, nutzen eine Wettlaufsituation aus, die als Teil der spekulativen Ausführungsfunktion moderner Prozessoren entsteht. Diese Funktionalität ist zwar zur Leistungsverbesserung gedacht, kann jedoch manipuliert werden, um sensible Daten preiszugeben.

Lösung

Verwenden Sie Cross-Origin-Resource-Policy, um no-cors Cross-Origin-Anfragen für bestimmte Ressourcen zu blockieren. Da diese Richtlinie über einen Antwort-Header ausgedrückt wird, wird die eigentliche Anfrage nicht verhindert. Stattdessen verhindert der Browser, dass das Ergebnis preisgegeben wird, indem er den Antwortkörper entfernt.

Die möglichen Werte sind:

same-origin

Beschränkt den Ressourcenzugriff auf Anfragen vom selben Ursprung. Dies wird für URLs empfohlen, die sensible Benutzerinformationen oder private APIs zurückgeben.

same-site

Beschränkt den Ressourcenzugriff auf Anfragen von derselben Site. Dies wird für Antworten von Ursprüngen empfohlen, deren Funktionalität mit mehreren anderen gleichen Site-Ursprüngen geteilt wird. Beispiele sind ein Unternehmens-CDN, das statische Ressourcen bereitstellt, und eine Single Sign-On (SSO) App, die die Authentifizierung verwaltet.

cross-origin

Ermöglicht den Zugriff auf Ressourcen durch Cross-Origin-Anfragen. Dies wird nur für Antworten von weit verbreiteten Ursprüngen wie öffentlichen CDNs oder Widgets empfohlen. Dies ist der Standardwert, wenn Cross-Origin-Resource-Policy nicht gesetzt ist.

Setzen Sie den restriktivsten Wert, der für Ihre Seite möglich ist.

Wenn Ihre Seite im Gegenzug Zugriff auf Cross-Origin-Ressourcen benötigt, wählen Sie einen besseren Standard, indem Sie einen Cross-Origin-Embedder-Policy Header zusammen mit den zugehörigen Anfragen senden. Dies wird das Laden von Cross-Origin-Ressourcen verhindern, die nicht auch explizit einen Cross-Origin-Resource-Policy: cross-origin Header senden.

Beispiele

Weisen Sie Browser an, Cross-Origin-Anfragen im no-cors Modus zu verbieten:

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

Weisen Sie Browser an, Cross-Origin-Ressourcenzugriff zuzulassen, einschließlich Zugriff auf Funktionen mit ungedrosselten Timern (wie SharedArrayBuffer Objekte oder Performance.now()):

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

Dies erlaubt auch das Einbetten solcher Ressourcen.

Siehe auch