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?
- Richiesta di posizione di Mozilla: In attesa
- Richiesta di posizione Webkit: Nessun segnale
- TAG W3C Richiesta di posizione: soddisfatta
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
- Rendere il tuo sito web "isolato da origini diverse" utilizzando COOP e COEP
- Perché hai bisogno di "isolamento multiorigine" per funzionalità efficaci
- Una guida per attivare l'isolamento multiorigine
- Aggiornamenti di SharedArrayBuffer in Chrome per Android 88 e Chrome per computer 92
- Carica risorse cross-origin senza intestazioni CORP utilizzando
COEP: credentialless
- IFrame senza credenziali - Sicurezza web | MDN