Menyelaraskan timer dengan pembatasan isolasi lintas asal

Sebelum versi 91, resolusi timer di Chrome dibatasi hingga 5 mikrodetik di desktop, dengan isolasi situs yang diaktifkan, dan maksimal 100 mikrodetik di Android.

Mulai versi 91, setelah perubahan spesifikasi, Chrome akan membatasi resolusi timer eksplisit (performance.now(), performance.timeOrigin, dan API performa lainnya yang mengekspos DOMHighResTimestamps) hingga 100 mikrodetik di seluruh platform. Dengan mengaktifkan isolasi lintas origin, situs dapat melonggarkan batasan hingga 5 mikrodetik, apa pun platformnya.

Mendapatkan kemampuan yang lebih andal dengan mengaktifkan isolasi lintas origin adalah pendekatan serupa yang dilakukan di SharedArrayBuffer. Isolasi lintas origin adalah status saat halaman web diisolasi dari asal lain, kecuali halaman yang diikutsertakan.

Apakah saya perlu melakukan sesuatu?

Mungkin tidak. performance.now() telah dibatasi untuk resolusi yang jauh lebih kasar di browser lain (misalnya, 1 milidetik = 0,001 detik), sehingga Anda tidak boleh mengandalkan resolusi saat ini.

Pada saat yang sama, jika Anda ingin mendapatkan manfaat dari resolusi yang lebih tinggi untuk timer, misalnya untuk pengukuran performa yang lebih akurat, Anda harus memastikan situs Anda diisolasi lintas origin. Tindakan tersebut akan memberi Anda resolusi yang lebih baik di Chrome dan browser berbasis Chromium lainnya, serta Firefox.

Apa yang harus dilakukan timer dengan isolasi lintas asal?

Vendor browser memutuskan untuk membatasi timer pada resolusi yang lebih umum (serta ketersediaan SharedArrayBuffer yang dapat digunakan sebagai timer implisit) saat Spectre ditemukan. Hal ini karena Spectre, dan serangan eksekusi spekulatif serupa, mengandalkan timer untuk mengukur waktu yang dibutuhkan operasi tertentu, lalu menebak isi memori proses.

Meskipun serangan eksekusi spekulatif dapat dijalankan dengan timer umum, timer resolusi tinggi dapat mempercepatnya. Chrome menggunakan arsitektur isolasi situs, serta mekanisme lainnya, untuk mengurangi risiko dan mengaktifkan kembali fungsi tersebut, tetapi fitur ini terbatas hanya untuk platform desktop dan browser Chromium. Memiliki API yang mengandalkan arsitektur browser dasar tidaklah ideal.

Isolasi lintas origin memberikan dasar pengukuran standar bagi browser untuk menjalankan halaman di lingkungan yang terisolasi sehingga tidak dapat memuat resource lintas origin yang tidak diinginkan, sehingga tidak berisiko bagi Spectre. Dengan isolasi lintas origin, kini kami dapat mengizinkan halaman mengakses timer beresolusi tinggi, SharedArrayBuffer, dan API lain yang tidak aman untuk diekspos dalam proses yang dapat membaca data lintas origin arbitrer.

Untuk mempelajari latar belakang di balik perubahan ini lebih lanjut, baca Alasan Anda memerlukan "isolasi lintas origin" untuk fitur canggih.

Foto sampul oleh Linda Perez Johannessen di Unsplash.