Iframe senza credenziali: 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 COEP.

L'iframe senza credenziali dell'iframe è attivo per impostazione predefinita a partire dalla versione 110 di Chrome. Risolve i reclami più comuni che gli sviluppatori che lavorano con Cross-Origin-Embedder-Policy (COEP) hanno: incorporamento di iframe di terze parti che non impostano COEP.

Perché abbiamo bisogno del COEP

Alcune API web aumentano il rischio di attacchi side-channel, come Spectre. Per mitigare questo rischio, i browser offrono un ambiente isolato basato su attivazione chiamato isolamento multiorigine, che richiede il deployment di COEP. L'isolamento multiorigine consente ai siti web di utilizzare funzionalità con privilegi tra cui SharedArrayBuffer, performance.measureUserAgentSpecificMemory() e timer ad alta precisione con risoluzione migliore.

Per attivare l'isolamento multiorigine, i siti web devono inviare le seguenti intestazioni HTTP:

Cross-Origin-Embedder-Policy: require-corp
Cross-Origin-Opener-Policy: same-origin

COEP:credentialless può essere utilizzato anche in alternativa a require-corp. Per ulteriori dettagli, consulta la documentazione.

Le sfide dell'attivazione del COEP

Sebbene l'isolamento multiorigine offra una maggiore sicurezza delle pagine web e la possibilità di abilitare funzionalità efficaci, il deployment di COEP può essere difficile. Una delle sfide maggiori è che tutti gli iframe multiorigine devono implementare COEP e CORP. Gli iframe senza queste intestazioni non verranno caricati dal browser.

Crea un iframe senza credenziali

Stiamo introducendo <iframe credentialless> per facilitare l'incorporamento di iframe di terze parti che non impostano il COEP. Se aggiungi l'attributo credentialless all'elemento <iframe>, l'iframe viene caricato da un contesto vuoto diverso. In particolare, viene caricato senza cookie. Ciò consente di rimuovere la restrizione COEP.

Esempio:

<iframe credentialless src="https://example.com">

Questo iframe viene creato in un nuovo contesto temporaneo e non ha accesso ad alcun cookie associato al sito web di primo livello. Inizia invece con un barattolo di 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 ha come ambito sia il documento di primo livello corrente sia l'origine dell'iframe. Tutto lo spazio di archiviazione viene cancellato una volta scaricato il documento di primo livello.

Gli iframe senza credenziali non sono soggetti alle regole di incorporamento COEP. Sono comunque sicuri: perché ogni volta vengono caricati da un nuovo contesto vuoto, non dovrebbero contenere dati personalizzati, che è quello che stanno cercando gli aggressori. Se un iframe contiene solo dati pubblici, questo non è importante per un utente malintenzionato.

Demo

Puoi guardare una demo di un iframe senza credenziali.

Domande frequenti

Questa funzionalità verrà adottata da altri browser?

<iframe> è nidificato all'interno di un <iframe credentialless> senza credenziali?

Sì. Vengono ereditati. Una volta che un iframe è privo di credenziali, questo vale per tutti gli iframe dell'intero sottoalbero anche senza un attributo credentialless.

Anche i popup creati da <iframe credentialless> sono privi di credenziali?

I popup si aprono come se fosse stato impostato noopener. Vengono creati in un nuovo contesto di primo livello standard e non sono privi di credenziali. Non possono comunicare con l'iframe senza credenziali.

Come rilevare che il documento è stato incorporato in un iframe senza credenziali?

window.credentialless è true all'interno di un iframe senza credenziali e false negli altri casi. Il suo valore è undefined in un browser web che non supporta <iframe credentialless>.

Risorse