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

L'iframe senza credenziali è attivato per impostazione predefinita dalla versione 110 di Chrome. Risolve il problema più comune riscontrato dagli sviluppatori che utilizzano Cross-Origin-Embedder-Policy (COEP): l'inserimento di iframe di terze parti che non impostano COEP.

Perché abbiamo bisogno del COEP

Alcune API web aumentano il rischio di attacchi lato canale come Spectre. Per ridurre questo rischio, i browser offrono un ambiente isolato basato sull'attivazione chiamato isolamento multiorigine, che richiede l'implementazione di COEP. L'isolamento cross-origin 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 tra origini, 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 come alternativa a require-corp. Per ulteriori dettagli, consulta la documentazione.

Problemi con l'attivazione del COEP

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

La soluzione iframe senza credenziali accorre in soccorso

Stiamo introducendo <iframe credentialless> per aiutarti a incorporare iframe di terze parti che non impostano il COEP. Aggiungendo l'attributo credentialless all'elemento <iframe>, l'iframe viene caricato da un contesto diverso e vuoto. In particolare, viene caricato senza cookie. In questo modo è possibile rimuovere la limitazione 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 invece con un barattolo dei biscotti vuoto. Analogamente, le API di archiviazione come LocalStorage, CacheStorage, IndexedDB e così via caricano e archiviano i dati nella nuova partizione temporanea. L'ambito della partizione è limitato sia al documento di primo livello corrente sia all'origine dell'iframe. Tutto questo spazio di archiviazione viene cancellato una volta scaricato il documento di primo livello.

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

Demo

Puoi dare un'occhiata a una demo di un iframe senza credenziali.

Domande frequenti

Questa funzionalità verrà adottata da altri browser?

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

Sì. È ereditato. Una volta che un iframe è senza credenziali, questo vale per tutti gli iframe nell'intero sottoalbero anche senza un attributo credentialless.

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

I popup vengono aperti come se fosse impostato noopener. Vengono creati in un nuovo contesto di primo livello normale e non sono senza 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 in caso contrario. Il valore è undefined in un browser web che non supporta <iframe credentialless>.

Risorse