Prova dell'origine dell'iframe anonimo: incorpora facilmente gli iframe negli ambienti COEP

Arthur Sonzogni
Arthur Sonzogni

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:

  1. Richiedi un token per la tua origine.
  2. 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
  3. 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?

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