Cross-Origin Resource Policy (CORP)-Implementierung

Die Cross-Origin Resource Policy (CORP) wird durch den Cross-Origin-Resource-Policy Antwort-Header festgelegt, der es Websites und Anwendungen ermöglicht, sich für den Schutz gegen Sicherheitsanfälligkeiten im Zusammenhang mit bestimmten Cross-Origin-Anfragen (wie denen, die durch die <script> und <img> Elemente gestellt werden) zu entscheiden.

Problem

Einige hardwareseitige Sicherheitsprobleme (auch bekannt als Cross-Site Leaks oder XS-Leaks), wie Meltdown und Spectre, nutzen ein Race Condition, das als Teil der spekulativen Ausführung von modernen Prozessoren auftritt. Diese Funktionalität soll die Leistung verbessern, kann aber manipuliert werden, um sensible Daten offenzulegen.

Lösung

Verwenden Sie Cross-Origin-Resource-Policy, um no-cors Cross-Origin-Anfragen zu bestimmten 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 Antwortinhalt entfernt.

Die möglichen Werte sind:

same-origin

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

same-site

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

cross-origin

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

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

Falls Ihre Website wiederum Zugriff auf Cross-Origin-Ressourcen benötigt, entscheiden Sie sich für einen besseren Standard, indem Sie einen Cross-Origin-Embedder-Policy Header zusammen mit den zugehörigen Anfragen 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 zu verbieten:

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 gedrosselten 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