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:
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()
):
Cross-Origin-Resource-Policy: same-origin
Cross-Origin-Embedder-Policy: require-corp
Dies erlaubt auch das Einbetten solcher Ressourcen.