Krijg cross-origin-isolatie en cross-site-lekbescherming tijdens interactie met pop-ups.
Er is een nieuwe waarde voor Cross-Origin Opener Policy (COOP) beschikbaar: restrict-properties
. Het levert beveiligingsvoordelen op en maakt het gemakkelijker om cross-origin-isolatie toe te passen, terwijl uw site kan communiceren met pop-ups van derden voor betalingen, authenticatie of andere gebruiksscenario's.
Als u wilt gaan experimenteren met restrict-properties
kunt u deelnemen aan de origin-proefversie die begint in Chrome 116 .
Waarom restrict-properties
gebruiken
restrict-properties
heeft twee belangrijke gebruiksscenario's:
- Voorkomt lekkages tussen locaties zonder breuk.
- Uw site cross-origineel geïsoleerd maken.
Voorkom lekkages tussen locaties zonder breuk
Standaard kan elke website uw applicatie in een pop-up openen en ernaar verwijzen.
Een kwaadwillende website kan dit in zijn voordeel gebruiken om aanvallen uit te voeren, zoals cross-site-lekken . Om dit risico te beperken, kunt u de Cross-Origin-Opener-Policy
(COOP) header gebruiken.
Tot nu toe waren uw mogelijkheden voor Cross-Origin-Opener-Policy
beperkt. Je kunt:
- Stel
same-origin,
waardoor alle cross-origin-interacties met pop-ups worden geblokkeerd. - Stel
same-origin-allow-popups
in, waarmee alle cross-origin-interacties worden geblokkeerd die uw site in een pop-up openen. - Stel
unsafe-none
in, waardoor alle cross-origin-interacties met pop-ups mogelijk zijn.
Dit maakte het onmogelijk voor websites die in een pop-up moeten worden geopend en met hun opener moeten communiceren om COOP af te dwingen. Hierdoor bleven belangrijke gebruiksscenario’s zoals eenmalige aanmelding en betalingen onbeschermd tegen lekken tussen sites.
Cross-Origin-Opener-Policy: restrict-properties
lost dit op.
Met restrict-properties
zijn eigenschappen die kunnen worden gebruikt voor het tellen van frames en andere cross-site-lekaanvallen niet beschikbaar, maar basiscommunicatie tussen vensters via postMessage
en closed
is toegestaan.
Dit verbetert de beveiliging van een site terwijl de belangrijkste gebruiksscenario's behouden blijven. Bijvoorbeeld:
- Als u een dienst in een pop-up aanbiedt, beschermt het instellen van
Cross-Origin-Opener-Policy: restrict-properties
u tegen een reeks cross-site-lekaanvallen. U kunt nog steeds alle pagina's openen die u voorheen kon openen. - Als u toegang nodig heeft tot een cross-origin pop-up, kunt u door het instellen van
Cross-Origin-Opener-Policy: restrict-properties
uw site op dezelfde manier beschermen tegen het tellen van iframes. U kunt dezelfde reeks pop-ups openen die u vandaag kunt openen. - Als zowel de opener als de geopende de koptekst instellen, en de pagina's cross-origineel zijn, gedraagt deze zich op dezelfde manier als een van hen die de koptekst heeft ingesteld. Als ze van dezelfde oorsprong zijn, wordt volledige toegang verleend.
Zorg ervoor dat uw site cross-origineel geïsoleerd is
Waarom we cross-originele isolatie nodig hebben
Sommige web-API's vergroten het risico op zijkanaalaanvallen zoals Spectre . Om dat risico te beperken, bieden browsers een op opt-in gebaseerde geïsoleerde omgeving, genaamd cross-origin isolation . Met een cross-origin geïsoleerde status kan de webpagina geprivilegieerde functies gebruiken, waaronder SharedArrayBuffer , performance.measureUserAgentSpecificMemory() en zeer nauwkeurige timers met een betere resolutie, terwijl de oorsprong van anderen wordt geïsoleerd, tenzij ze zijn aangemeld.
Tot nu toe moest je om deze API's te gebruiken Cross-Origin-Opener-Policy: same-origin
instellen. Dit zou echter elke cross-origin pop-upstroom die u mogelijk nodig heeft, zoals eenmalige aanmelding en betalingen, verbreken.
Cross-Origin-Opener-Policy: restrict-properties
kunnen nu worden gebruikt in plaats van Cross-Origin-Opener-Policy: same-origin
om cross-origin-isolatie mogelijk te maken. In plaats van de openerrelatie te verbreken, wordt deze alleen beperkt tot de minimale communicatiesubset van window.postMessage()
en window.closed
.
U kunt cross-origin-isolatie inschakelen met de volgende twee headers:
Cross-Origin-Opener-Policy: restrict-properties
Cross-Origin-Embedder-Policy: require-corp
of
Cross-Origin-Opener-Policy: restrict-properties
Cross-Origin-Embedder-Policy: credentialless
Lees meer over credentialless
op Cross-origin-bronnen laden zonder CORP-headers met behulp van COEP: credentialless
.
Demo
Probeer verschillende headeropties in deze cross-origin isolatiedemo .
Experimenteer met de oorsprongproef
Als u wilt experimenteren met Cross-Origin-Opener-Policy: restrict-properties
, meldt u zich aan voor de origin-proefversie .
Browser-ondersteuning
Cross-Origin-Opener-Policy: restrict-properties
wordt momenteel alleen ondersteund in Chrome. Andere browsers zijn actief betrokken bij de discussie over standaardisatie .
Veelgestelde vragen
Mijn website moet communiceren met pop-ups van dezelfde oorsprong. Moet ik COOP: restrict-properties
gebruiken om cross-origin isolatie mogelijk te maken?
Het instellen van COOP: restrict-properties
op zowel de pop-up als uw hoofdpagina zal geen beperkingen veroorzaken. Als u dit alleen in de pop-up of alleen op de hoofdpagina instelt, wordt elke toegang tot andere eigenschappen dan postMessage
voorkomen en wordt deze via de opener closed
, zelfs als deze van dezelfde oorsprong zijn.
Staat de reeks toegestane eigenschappen vast?
Op basis van de feedback tot nu toe wordt vermoed dat window.postMessage
en window.closed
voldoende zijn voor de meeste workflows, maar we overwegen nog steeds om het voor andere eigenschappen open te stellen. Als u een gebruiksscenario heeft dat niet kan worden opgelost met alleen postMessage
en closed
laat dan uw feedback achter in de Intent to Experiment-thread .
Bronnen
- Maak uw website ‘cross-origin geïsoleerd’ met behulp van COOP en COEP
- Waarom je ‘cross-origin geïsoleerd’ nodig hebt voor krachtige functies
- Een gids om cross-origin isolatie mogelijk te maken
- SharedArrayBuffer-updates in Android Chrome 88 en Desktop Chrome 92
- Laad cross-origine bronnen zonder CORP-headers met behulp van
COEP: credentialless
- Chrome Developers - Anonieme proefversie van iframe-oorsprong: iframes eenvoudig insluiten in COEP-omgevingen - Chrome-ontwikkelaars