Cross-Origin-Embedder-Policy (COEP) ist ein HTTP-Response-Header, der festlegt, welche fremdherkunftsübergreifenden Ressourcen (Cross-Origin-Ressourcen) eine Website einbetten darf. Zusammen mit der Cross-Origin-Opener-Policy (COOP) macht er ein Dokument cross-origin isolated und schützt so vor Seitenkanal-Angriffen wie Spectre.
Die drei Werte
unsafe-none— Standardzustand, keine Einschränkung für eingebettete Ressourcen.require-corp— Jede Cross-Origin-Subressource muss ausdrücklich zustimmen: über einen Cross-Origin-Resource-Policy-Header (CORP) oder eine CORS-Freigabe. Sonst blockiert der Browser das Laden.credentialless— Cross-Origin-Anfragen werden ohne Cookies und andere Berechtigungsnachweise gesendet. Dadurch gelten Ressourcen als sicher, ohne dass jeder Server einen CORP-Header setzen muss; moderne Browser unterstützen diesen Wert.
Cross-Origin Isolation
Setzt eine Seite Cross-Origin-Opener-Policy: same-origin und COEP auf require-corp oder credentialless, gilt das Dokument als cross-origin isolated. Das lässt sich im JavaScript über window.crossOriginIsolated prüfen. Im isolierten Zustand stehen leistungsfähige APIs zur Verfügung:
SharedArrayBuffer— gemeinsame Speicherbereiche zwischen Threads (Grundlage vieler WebAssembly-Anwendungen),- präzisere
performance.now()-Zeitmessung ohne Timer-Drosselung, - Speicher-Analyse über
performance.measureUserAgentSpecificMemory().
Die Isolation ist nur in einem sicheren Kontext über HTTPS möglich und verhindert, dass ein Angreifer über eingebettete fremde Ressourcen Ladezeiten oder Speicherzustände vermisst — die Messbasis für Spectre-artige Seitenkanal-Angriffe.
Fehlerdiagnose
Werden Ressourcen blockiert, liefern die Entwicklerwerkzeuge des Browsers eine Meldung mit dem fehlenden CORP-Header. COEP-Verstöße lassen sich außerdem über die Reporting API an einen eigenen Endpunkt melden.
Verwandte Grundlagen: Cross-Origin-Opener-Policy, Cross-Origin-Resource-Policy, CORS, Same-Origin-Policy, Content-Security-Policy.