Gli sviluppatori che utilizzano COEP ora possono incorporare iframe di terze parti che non utilizzano il codice COEP.
Perché abbiamo bisogno di COEP
Alcune API web aumentano il rischio di attacchi side-channel come Spectre. Per ridurre questo rischio, i browser offrono un ambiente isolato basato su attivazione chiamata isolamento multiorigine, che, tra le altre cose, richiede il deployment di COEP. Ciò consente ai siti web di utilizzare funzionalità privilegiate
tra cui
SharedArrayBuffer
,
performance.measureUserAgentSpecificMemory()
e
timer ad alta precisione con una risoluzione migliore.
Per attivare l'isolamento multiorigine, i siti web devono inviare le seguenti due intestazioni HTTP:
Cross-Origin-Embedder-Policy: require-corp
Cross-Origin-Opener-Policy: same-origin
Sfide con l'attivazione del COEP
Sebbene l'isolamento multiorigine offra una maggiore sicurezza alle pagine web e la possibilità di attivare funzionalità efficaci, il deployment di COEP può essere difficile. Una delle sfide principali è che per tutti gli iframe multiorigine deve essere eseguito il deployment di COEP e CORP. Gli iframe senza queste intestazioni non verranno caricati dal browser.
Gli iframe vengono generalmente pubblicati da una terza parte per la quale potrebbe non essere facile implementare COEP.
Iframe anonimo in soccorso
È qui che entra in gioco l'iframe anonimo. Se aggiungi l'attributo anonymous
all'elemento <iframe>
, l'iframe viene caricato da una partizione di archiviazione temporanea diversa e non è più soggetto alle restrizioni COEP.
Esempio:
<iframe anonymous src="https://example.com">
L'iframe viene creato in un nuovo contesto temporaneo e non ha accesso a nessuno dei
cookie associati al sito web di primo livello. Inizia da un barattolo
di cookie vuoto. Allo stesso modo, le API di archiviazione come LocalStorage
, CacheStorage
, IndexedDB
e così via, caricano e archiviano i dati nella nuova partizione temporanea. La partizione ha come ambito il documento di primo livello corrente e l'origine dell'iframe. Lo spazio di archiviazione
verrà cancellato una volta eseguito l'unload del documento di primo livello.
Gli iframe anonimi non sono soggetti alle regole di incorporamento COEP. Questa operazione è ancora sicura, perché viene caricata ogni volta da un nuovo contesto vuoto. Verranno caricati senza che i loro dati siano personalizzati. Contengono solo dati pubblici, che non sono preziosi per un utente malintenzionato.
Demo
Puoi controllare un iframe anonimo all'indirizzo: https://anonymous-iframe.glitch.me/
Registrati per una prova dell'origine
Per assicurarci che gli iframe anonimi aiutino gli sviluppatori ad adottare l'isolamento multiorigine, li stiamo rendendo disponibili in Chrome dalla versione 106 alla 108 come prova delle origini.
Registrati per la prova dell'origine per consentire al tuo sito web di utilizzare iframe anonimi:
- Richiedi un token per la tua origine.
- Utilizza il token in uno dei seguenti modi:
- Nel codice HTML:
html <meta http-equiv="Origin-Trial" content="TOKEN_GOES_HERE">
- Nel codice JavaScript:
js const meta = document.createElement('meta'); meta.httpEquiv = 'Origin-Trial'; meta.content = 'TOKEN_GOES_HERE'; document.head.append(meta);
- Nelle intestazioni HTTP:
text Origin-Trial: TOKEN_GOES_HERE
- Nel codice HTML:
- Aggiungi un iframe anonimo alla tua pagina:
html <iframe anonymous src="https://example.com">
Se hai feedback su questa funzionalità, segnala il problema nel repository di GitHub.
Prova dell'origine di terze parti
La prova dell'origine è disponibile anche per gli script di terze parti. Significa che può essere attivato da script incorporati nella pagina.
Scopri di più su come registrarsi per una prova dell'origine di terze parti.
Domande frequenti
Questa funzionalità verrà adottata da altri browser?
- Richiesta di Mozilla per la posizione: In attesa
- Richiesta Webkit per la posizione: Nessun indicatore
- W3C TAG Richiesta per la posizione: soddisfatto
Gli iframe nidificati all'interno di <iframe anonymous>
sono anonimi?
Sì. Viene ereditato. Se un iframe è anonimo, ciò si applica a tutti gli iframe
nell'intero sottoalbero anche senza un attributo anonymous
.
Anche i popup creati da <iframe anonymous>
sono anonimi?
I popup si aprono come se fosse stato impostato noopener
. Vengono creati da un nuovo
contesto di primo livello regolare e non sono anonimi. Non possono comunicare con
l'iframe anonimo.
Risorse
- Rendere il tuo sito web "isolato multiorigine" utilizzando COOP e COEP
- Perché è necessario "isolamento multiorigine" per funzionalità potenti
- Una guida per attivare l'isolamento multiorigine
- Aggiornamenti di SharedArraybu in Chrome 88 per Android e Chrome 92 per computer
- Carica le risorse multiorigine senza intestazioni CORP utilizzando
COEP: credentialless