Cross-Origin Resource Policy (CORP) Implementierung

Die Cross-Origin Resource Policy (CORP) wird durch das Cross-Origin-Resource-Policy Antwort-Header gesetzt, der es Webseiten und Anwendungen ermöglicht, sich für Schutzmaßnahmen gegen Schwachstellen im Zusammenhang mit bestimmten cross-origin-Anfragen (wie denen, die durch <script> und <img> Elemente gemacht werden) zu entscheiden.

Problem

Einige Seitenkanal-Hardware-Schwachstellen (auch bekannt als Cross-site leaks oder XS-Leaks), wie Meltdown und Spectre, nutzen eine Race-Condition aus, die sich im Rahmen der spekulativen Ausführungsfunktionalität moderner Prozessoren ergibt. Diese Funktionalität ist darauf ausgelegt, die Leistung zu verbessern, kann jedoch manipuliert werden, um sensible Daten preiszugeben.

Lösung

Verwenden Sie Cross-Origin-Resource-Policy, um no-cors cross-origin-Anfragen zu bestimmten Ressourcen zu blockieren. Da diese Richtlinie über ein Antwort-Header ausgedrückt wird, wird die eigentliche Anfrage nicht verhindert. Stattdessen verhindert der Browser, dass das Ergebnis durch das Entfernen des Antwortkörpers durchsickert.

Die möglichen Werte sind:

same-origin

Beschränkt den Ressourcenzugriff auf Anfragen, die von demselben Origin kommen. Dies wird für URLs empfohlen, die mit sensiblen Benutzerinformationen oder privaten APIs antworten.

same-site

Beschränkt den Ressourcenzugriff auf Anfragen, die von derselben Site kommen. Dies wird für Antworten von Origins empfohlen, deren Funktionalität über mehrere andere gleiche Site-Origins geteilt wird. Beispiele umfassen ein Unternehmens-CDN, das statische Ressourcen bereitstellt, und eine Single-Sign-On (SSO)-App, die die Authentifizierung verwaltet.

cross-origin

Erlaubt den Zugriff auf Ressourcen durch cross-origin-Anfragen. Dies wird nur für Antworten von weithin genutzten Ursprüngen, wie öffentliche 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 ihrerseits Zugriff auf cross-origin-Ressourcen benötigt, entscheiden Sie sich für einen besseren Standard, indem Sie zusammen mit den zugehörigen Anfragen einen Cross-Origin-Embedder-Policy Header senden. Dies verhindert das Laden von cross-origin-Ressourcen, die nicht ebenfalls explizit einen Cross-Origin-Resource-Policy: cross-origin Header senden.

Beispiele

Weisen Sie Browser an, cross-origin-Anfragen im no-cors Modus nicht zu erlauben:

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

Weisen Sie Browser an, den Zugriff auf cross-origin-Ressourcen zu erlauben, einschließlich des Zugriffs auf Funktionen mit nicht gebremsten 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