Allineare i timer con le limitazioni relative all'isolamento multiorigine

Prima della versione 91, le risoluzioni dei timer in Chrome erano limitate a 5 microsecondi su computer, dove è attivato l'isolamento dei siti, e a 100 microsecondi su Android, dove non lo è.

A partire dalla versione 91, in seguito a una modifica delle specifiche, Chrome limiterà la risoluzione dei timer espliciti (performance.now(), performance.timeOrigin e altre API di misurazione delle prestazioni che espongono DOMHighResTimestamps) a 100 microsecondi su tutte le piattaforme. Se attivi l'isolamento cross-origin, i siti web possono allentare la limitazione a 5 microsecondi indipendentemente dalla piattaforma.

Un approccio simile è stato proposto su SharedArrayBuffer per ottenere funzionalità più potenti attivando l'isolamento multiorigine. L'isolamento cross-origin è uno stato in cui una pagina web è isolata dalle altre origini, ad eccezione di quelle attivate.

Devo fare qualcosa?

Probabilmente no. performance.now() è stato limitato a risoluzioni molto più approssimative in altri browser (ad esempio, 1 millisecondo = 0,001 secondi), quindi non dovresti fare affidamento sulla risoluzione corrente.

Allo stesso tempo, se vuoi usufruire di una risoluzione più elevata per i timer, ad esempio per misurazioni del rendimento più accurate, devi assicurarti che il tuo sito sia isolato da origini diverse. In questo modo avrai una risoluzione migliore sia in Chrome che in altri browser basati su Chromium, nonché in Firefox.

Che cosa c'entrano i timer con l'isolamento multiorigine?

I fornitori di browser hanno deciso di limitare i timer a risoluzioni più approssimative (nonché la disponibilità di SharedArrayBuffers che possono essere utilizzati come timer impliciti) quando è stato scoperto Spectre. Questo perché Spectre e attacchi di esecuzione speculativa simili si basano su timer per misurare il tempo impiegato da determinate operazioni, quindi indovinano i contenuti della memoria del processo.

Sebbene gli attacchi di esecuzione speculativa possano essere eseguiti con timer approssimativi, i timer ad alta risoluzione possono accelerarli. Chrome ha utilizzato la sua architettura di isolamento dei siti, nonché altri meccanismi, per ridurre il rischio e riattivare queste funzionalità, ma è limitata alle piattaforme desktop e ai browser Chromium. Avere API che si basano sull'architettura del browser sottostante non è l'ideale.

L'isolamento interorigine fornisce la linea di base standard per consentire ai browser di eseguire pagine in un ambiente isolato in modo che non siano in grado di caricare risorse cross-origin indesiderate e, di conseguenza, non siano a rischio per Spectre. Con l'isolamento cross-origin, ora possiamo consentire alle pagine di accedere a timer ad alta risoluzione, SharedArrayBuffer, e ad altre API non sicure da esporre in processi che possono leggere dati cross-origin arbitrari.

Per saperne di più sui motivi alla base di questa modifica, leggi Perché hai bisogno di "isolato cross-origin" per funzionalità efficaci.

Foto di copertina di Linda Perez Johannessen su Unsplash.