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?
- Richiesta di Mozilla per la posizione: In attesa
- Richiesta Webkit per la posizione: nessun indicatore
- W3C TAG Richiesta per la posizione: soddisfatto
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
- Rendere il tuo sito web "isolato multiorigine" utilizzando COOP e COEP
- Perché è necessario "isolamento multiorigine" per funzionalità potenti
- Una guida per attivare l'isolamento multiorigine
- Aggiornamenti di SharedArraybu in Chrome 88 per Android e Chrome 92 per computer
- Carica le risorse multiorigine senza intestazioni CORP utilizzando
COEP: credentialless
- IFrame senza credenziali - Sicurezza web | MDN