Proteggi le interazioni popup con le proprietà di limitazione

Ottieni l'isolamento multiorigine e la protezione dalle fughe di dati tra siti durante l'interazione con i popup.

Arthur Hemery
Maud Nalpas
Maud Nalpas

È disponibile un nuovo valore per Cross-Origin Opener Policy (COOP): restrict-properties. Offre vantaggi in termini di sicurezza e semplifica l'adozione dell'isolamento multiorigine, consentendo al contempo al sito di interagire con popup di terze parti per pagamenti, autenticazione o altri casi d'uso.

Per iniziare a sperimentare con restrict-properties, partecipa alla prova dell'origine a partire da Chrome 116.

Perché utilizzare restrict-properties

restrict-properties ha due casi d'uso principali:

Previeni fughe di dati tra siti senza interruzioni

Per impostazione predefinita, qualsiasi sito web può aprire la tua applicazione in un popup e ottenere un riferimento.

Un sito web dannoso può sfruttare questa possibilità a proprio vantaggio per eseguire attacchi come fuga di dati tra siti. Per ridurre questo rischio, puoi utilizzare l'intestazione Cross-Origin-Opener-Policy (COOP).

Finora, le opzioni a tua disposizione per Cross-Origin-Opener-Policy erano limitate. Puoi:

  • Imposta same-origin, che blocca tutte le interazioni multiorigine con i popup.
  • Imposta same-origin-allow-popups, che blocca tutte le interazioni multiorigine che aprono il tuo sito in un popup.
  • Imposta unsafe-none, che consente tutte le interazioni multiorigine con i popup.

Ciò rendeva impossibile per i siti web che dovevano essere aperti in un popup e interagire con l'elemento di apertura per applicare COOP. Ciò ha lasciato i casi d'uso chiave, come il Single Sign-On e i pagamenti, non protetti dalle fughe di dati tra siti.

Cross-Origin-Opener-Policy: restrict-properties risolve questo problema.

Con restrict-properties non sono disponibili proprietà che possono essere utilizzate per il conteggio dei frame e altri attacchi di fughe di dati tra siti, ma la comunicazione di base tra Windows tramite postMessage e closed è consentita.

Ciò migliora la sicurezza di un sito, pur mantenendo i principali casi d'uso. Ad esempio:

  • Se fornisci un servizio in un popup, la configurazione di Cross-Origin-Opener-Policy: restrict-properties ti protegge da una serie di attacchi di fuga di notizie tra siti. Puoi comunque aprire tutte le pagine che potevi aprire in precedenza.
  • Se hai bisogno di accedere a un popup multiorigine, l'impostazione di Cross-Origin-Opener-Policy: restrict-properties proteggerà in modo simile il tuo sito dal conteggio degli iframe. Potrai aprire lo stesso insieme di popup che puoi aprire oggi.
  • Se sia l'apertura sia l'aperto impostano l'intestazione e le pagine sono multiorigine, si comporta in modo simile a uno di loro che ha impostato l'intestazione. Se sono della stessa origine, l'accesso completo viene concesso.

Isolare il sito con isolamento multiorigine

Perché è necessario l'isolamento multiorigine

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 attiva chiamato isolamento multiorigine. Con uno stato isolato multiorigine, la pagina web può utilizzare funzionalità con privilegi come SharedArrayBuffer, performance.measureUserAgentSpecificMemory() e timer ad alta precisione con una risoluzione migliore, isolando l'origine da altre origini, a meno che non siano attivate.

Finora, per utilizzare queste API dovevi impostare Cross-Origin-Opener-Policy: same-origin. Tuttavia, questo interromperebbe qualsiasi flusso popup multiorigine di cui potresti aver bisogno, come Single Sign-On e Payments.

Ora puoi utilizzare Cross-Origin-Opener-Policy: restrict-properties al posto di Cross-Origin-Opener-Policy: same-origin per attivare l'isolamento multiorigine. Anziché interrompere la relazione di apertura, si limita a limitarla al sottoinsieme minimo di comunicazione window.postMessage() e window.closed.

Potrai attivare l'isolamento multiorigine con le due intestazioni seguenti:

Cross-Origin-Opener-Policy: restrict-properties
Cross-Origin-Embedder-Policy: require-corp

o

Cross-Origin-Opener-Policy: restrict-properties
Cross-Origin-Embedder-Policy: credentialless

Scopri di più su credentialless alla pagina Caricare risorse multiorigine senza intestazioni CORP utilizzando COEP: credentialless.

Demo

Prova diverse opzioni di intestazione in questa demo dell'isolamento multiorigine.

Sperimenta con la prova dell'origine

Per sperimentare con Cross-Origin-Opener-Policy: restrict-properties, attiva la prova dell'origine.

Supporto del browser

Al momento Cross-Origin-Opener-Policy: restrict-properties è supportato solo in Chrome. Altri browser sono attivamente coinvolti nella discussione per la standardizzazione.

Domande frequenti

Il mio sito web deve comunicare con i popup della stessa origine. Devo usare COOP: restrict-properties per attivare l'isolamento multiorigine?

L'impostazione di COOP: restrict-properties sia nel popup che nella pagina principale non causerà limitazioni. L'impostazione di questa opzione solo nel popup o solo nella pagina principale impedirà l'accesso a proprietà diverse da postMessage e closed nell'app di apertura, anche se hanno la stessa origine.

L'insieme di proprietà consentite è stato corretto?

In base ai feedback ricevuti finora, si sospetta che window.postMessage e window.closed siano sufficienti per la maggior parte dei flussi di lavoro, ma stiamo ancora valutando di aprirli ad altre proprietà. Se il tuo caso d'uso non può essere risolto utilizzando solo postMessage e closed lascia il tuo feedback nel thread dell'intent per l'esperimento.

Risorse