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

Arthur Sonzogni
Arthur Sonzogni

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:

  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">
    • 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
  3. 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?

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