Cross-Origin Resource Policy (CORP)

Cross-Origin Resource Policy ist eine Richtlinie, die durch den Cross-Origin-Resource-Policy HTTP-Header festgelegt wird. Sie ermöglicht es Websites und Anwendungen, sich vor bestimmten Anfragen von anderen Origin zu schützen (z. B. solche, die mit Elementen wie <script> und <img> gestellt werden), um spekulative Seitenkanal-Attacken wie Spectre sowie Cross-Site Script Inclusion-Angriffe zu mildern. CORP ist eine zusätzliche Schutzschicht über die standardmäßige Same-Origin-Policy hinaus.

Hinweis: Die Richtlinie ist nur effektiv für no-cors Anfragen, die standardmäßig für CORS-sichere Methoden/Headers ausgeführt werden.

Da diese Richtlinie über einen Antwort-Header ausgedrückt wird, wird die tatsächliche Anfrage nicht verhindert, sondern der Browser verhindert, dass das Ergebnis geleakt wird, indem er den Antwortkörper entfernt.

Nutzung

Hinweis: Aufgrund eines Bugs in Chrome kann die Einstellung von Cross-Origin-Resource-Policy das Rendern von PDFs stören, was Besucher daran hindert, über die erste Seite einiger PDFs hinaus zu lesen. Seien Sie vorsichtig, diesen Header in einer Produktionsumgebung zu verwenden.

Webanwendungen setzen eine Cross-Origin Resource Policy über den Cross-Origin-Resource-Policy HTTP-Antwort-Header, der einen von drei Werten annimmt:

same-site

Nur Anfragen von der gleichen Site können die Ressource lesen.

Warnung: Dies ist weniger sicher als eine Origin. Der Algorithmus zum Überprüfen, ob zwei Origins gleiche Site sind wird im HTML-Standard definiert und beinhaltet die Überprüfung der registrierbaren Domain.

same-origin

Nur Anfragen von der gleichen Origin (d.h. Schema + Host + Port) können die Ressource lesen.

cross-origin

Anfragen von jeder Origin (sowohl gleiche Site als auch übergreifende Site) können die Ressource lesen. Dies ist nützlich, wenn COEP verwendet wird (siehe unten).

http
Cross-Origin-Resource-Policy: same-site | same-origin | cross-origin

Während einer Cross-Origin-Resource-Policy-Überprüfung, wenn der Header gesetzt ist, wird der Browser no-cors Anfragen, die von einer anderen Origin/Site gestellt werden, ablehnen.

Beziehung zur Cross-Origin Embedder Policy (COEP)

Der Cross-Origin-Embedder-Policy HTTP-Antwort-Header, wenn er bei einem Dokument verwendet wird, kann verwendet werden, um Subressourcen zu verlangen, entweder dieselbe Origin wie das Dokument zu haben oder mit einem Cross-Origin-Resource-Policy HTTP-Antwort-Header zu kommen, der angibt, dass sie einverstanden sind, eingebettet zu werden. Deshalb existiert der Wert cross-origin.

Geschichte

Das Konzept wurde ursprünglich im Jahr 2012 (als From-Origin-Header) vorgeschlagen, aber wieder aufgelebt im zweiten Quartal 2018 und in Safari und Chromium implementiert.

Anfang 2018 wurden zwei Seitenkanal-Hardware-Schwachstellen bekannt, die als Meltdown und Spectre bekannt sind. Diese Schwachstellen ermöglichten die Offenlegung sensibler Daten aufgrund einer Race-Bedingung, die als Teil der spekulativen Ausführungsfunktionalität auftrat, die zur Steigerung der Leistung entwickelt wurde.

Die Cross-Origin Resource Policy wurde als direkter Weg entwickelt, um unerwünschte no-cors Cross-Origin-Anfragen zu blockieren. Dies ist eine effektive Verteidigung gegen Spectre-ähnliche Angriffe, da der Browser den Körper von gegebenen Antworten entfernt, bevor ein Angreifer darauf zugreifen kann.

Spezifikationen

Specification
Fetch
# cross-origin-resource-policy-header

Browser-Kompatibilität

Siehe auch