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 il codice COEP.

L'iframe senza credenziali è attivato per impostazione predefinita a partire dalla versione 110 di Chrome. Risolve gli sviluppatori di reclami più comuni che lavorano con Cross-Origin-Embedder-Policy (COEP): l'incorporamento di iframe di terze parti che non impostano il 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 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 una 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

Puoi utilizzare COEP:credentialless anche in alternativa a require-corp. Per ulteriori dettagli, consulta la documentazione.

Sfide con l'attivazione del COEP

Sebbene l'isolamento multiorigine offra alle pagine web una maggiore sicurezza e la capacità di attivare funzionalità efficaci, l'implementazione 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.

Iframe senza credenziali per l'aiuto

Stiamo introducendo <iframe credentialless> per facilitare l'incorporamento di iframe di terze parti che non impostano il COEP. Aggiungendo l'attributo credentialless all'elemento <iframe>, l'iframe viene caricato da un altro contesto vuoto. 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 a nessuno dei cookie associati al sito web di primo livello. Inizia con un barattolo di biscotti 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 sia il documento di primo livello corrente sia l'origine dell'iframe. Tutto questo spazio di archiviazione viene svuotato una volta eseguito l'unload del documento di primo livello.

Gli iframe senza credenziali non sono soggetti alle regole di incorporamento COEP. Sono comunque sicuri: poiché vengono caricati ogni volta da un nuovo contesto vuoto, non devono contenere dati personalizzati, ciò che cercano gli aggressori. Se un iframe contiene solo dati pubblici, non è utile per un utente malintenzionato.

Demo

Puoi guardare una demo di un iframe senza credenziali.

Domande frequenti

Questa funzionalità verrà adottata da altri browser?

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

Sì. Viene ereditato. Una volta che un iframe è senza credenziali, questo si applica a tutti gli iframe nell'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 create in un nuovo contesto di primo livello regolare e non sono prive di credenziali. Non sono in grado di comunicare con l'iframe senza credenziali.

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

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

Risorse