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