Gli sviluppatori che utilizzano il protocollo COEP ora possono incorporare iframe di terze parti che non utilizzano lo stesso protocollo.
Perché abbiamo bisogno del COEP
Alcune API web aumentano il rischio di attacchi side-channel come
Spectre. Per attenuare questo rischio, i browser offrono un ambiente isolato basato su attivazione chiamato isolamento multiorigine, che, tra le altre cose, richiede l'implementazione di COEP. In questo modo, i siti web possono utilizzare funzionalità privilegiate, tra cui SharedArrayBuffer
, performance.measureUserAgentSpecificMemory()
e timer ad alta precisione con una risoluzione migliore.
Per attivare l'isolamento tra origini, i siti web devono inviare le seguenti due intestazioni HTTP:
Cross-Origin-Embedder-Policy: require-corp
Cross-Origin-Opener-Policy: same-origin
Problemi di attivazione del COEP
Sebbene l'isolamento multiorigine offra una maggiore sicurezza delle pagine web e la possibilità di abilitare funzionalità avanzate, il deployment di COEP può essere difficile. Uno dei maggiori problemi è che tutti gli iframe cross-origin devono implementare anche COEP e CORP. Gli iframe senza queste intestazioni non verranno caricati dal browser.
Gli iframe vengono in genere pubblicati da una terza parte per la quale potrebbe non essere facile implementare il COEP.
L'iframe anonimo viene in soccorso
Ed è qui che entra in gioco l'iframe anonimo. Aggiungendo l'attributo anonymous
all'elemento <iframe>
, l'iframe viene caricato da una partizione di archiviazione temporanea diversa e non è più soggetto alle limitazioni del COEP.
Esempio:
<iframe anonymous src="https://example.com">
L'iframe viene creato in un nuovo contesto temporaneo e non ha accesso ai cookie associati al sito web di primo livello. Inizia da un barattolo per biscotti vuoto. Analogamente, le API di archiviazione come
LocalStorage
,
CacheStorage
,
IndexedDB
e così
via, caricano e archiviano i dati nella nuova partizione temporanea. La partizione è limitata al documento di primo livello e all'origine dell'iframe correnti. Lo spazio di archiviazione
viene cancellato una volta scaricato il documento di primo livello.
Gli iframe anonimi non sono soggetti alle regole di incorporamento COEP. Questa operazione è comunque sicura, perché ogni volta i componenti vengono caricati da un nuovo contesto vuoto. Verranno caricati senza che i loro dati vengano personalizzati. Contengono solo dati pubblici, che non sono importanti per un malintenzionato.
Demo
Puoi controllare un iframe anonimo all'indirizzo: https://anonymous-iframe.glitch.me/
Registrati per una prova dell'origine
Per garantire che gli iframe anonimi aiutino gli sviluppatori ad adottare l'isolamento cross-origin, li renderemo disponibili in Chrome dalla versione 106 alla 108 come prova di origine.
Registrati alla prova dell'origine per consentire al tuo sito web di utilizzare gli 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">
- In 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 pagina:
html <iframe anonymous src="https://example.com">
Se hai feedback su questa funzionalità, segnala un problema nel repository GitHub.
Prova dell'origine di terze parti
La prova dell'origine è disponibile anche per gli script di terze parti. Ciò significa che può essere attivata dagli script incorporati nella pagina.
Scopri di più su come registrarti per una prova dell'origine di terze parti.
Domande frequenti
Questa funzionalità verrà adottata da altri browser?
- Richiesta di posizione di Mozilla: In attesa
- Richiesta Webkit per la posizione: Nessun indicatore
- TAG W3C Richiesta di posizione: soddisfatta
Gli iframe nidificati all'interno di <iframe anonymous>
sono anonimi?
Sì. È ereditato. Se un iframe è anonimo, questo viene applicato a tutti gli iframe dell'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 normale e non sono anonimi. Non possono comunicare con l'iframe anonimo.
Risorse
- Rendere il tuo sito web "isolato da origini diverse" utilizzando COOP e COEP
- Perché hai bisogno di "isolamento multiorigine" per funzionalità efficaci
- Una guida per attivare l'isolamento multiorigine
- Aggiornamenti di SharedArrayBuffer in Chrome per Android 88 e Chrome per computer 92
- Carica risorse cross-origin senza intestazioni CORP utilizzando
COEP: credentialless