Zamanlayıcıları çapraz kaynak yalıtım kısıtlamalarıyla uyumlu hale getirme

91 sürümünden önce Chrome'daki zamanlayıcı çözünürlükleri, site-isolation özelliğinin etkin olduğu masaüstünde 5 mikrosaniyeyle, bu özelliğin etkin olmadığı Android'de ise 100 mikrosaniyeyle sınırlıydı.

Özellik değişikliği sonrasında, Chrome 91 sürümünden itibaren açık zamanlayıcıların (performance.now(), performance.timeOrigin ve DOMHighResTimestamps'yi gösteren diğer performans API'leri) çözünürlüğünü platformlar genelinde 100 mikrosaniyeye kısıtlayacaktır. Web siteleri, çapraz kaynak izolasyonunu etkinleştirerek platformdan bağımsız olarak kısıtlamayı 5 mikrosaniyeye indirebilir.

Kökler arası erişime kapalı web siteleri etkinleştirerek daha güçlü özellikler elde etmek, SharedArrayBuffer'te sunulan benzer bir yaklaşımdır. Kaynaklar arası izolasyon, bir web sayfasının etkinleştirilenler dışındaki diğer kaynaklardan izole edildiği bir durumdur.

Bununla ilgili bir işlem yapmam gerekiyor mu?

Muhtemelen karşılaşmazsınız. performance.now(), diğer tarayıcılarda önemli ölçüde daha kaba çözünürlüklerle sınırlandırılmıştır (örneğin, 1 milisaniye = 0,001 saniye). Bu nedenle, mevcut çözünürlüğe güvenmeniz zaten gerekmez.

Aynı zamanda, zamanlayıcılarınız için daha yüksek çözünürlükten (ör. daha doğru performans ölçümleri için) yararlanmak istiyorsanız sitenizin kaynaklar arası izole olduğundan emin olmanız gerekir. Bu, hem Chrome hem de diğer Chromium tabanlı tarayıcılarda ve Firefox'ta daha iyi çözünürlük sağlar.

Zamanlayıcıların kökler arası erişime kapalı web siteleriyle ne ilgisi var?

Spectre keşfedildiğinde tarayıcı tedarikçileri, zamanlayıcıları daha kaba çözünürlüklerle (ve ayrıca, varsayılan zamanlayıcı olarak kullanılabilen SharedArrayBuffer'ların kullanılabilirliğiyle) sınırlamaya karar verdi. Bunun nedeni, Spectre ve benzer spekülatif yürütme saldırılarının belirli işlemlerin ne kadar sürdüğünü ölçmek için zamanlayıcılara güvenmesi ve ardından sürecin belleğinin içeriğini tahmin etmesidir.

Spekülatif yürütme saldırıları kaba zamanlayıcılarla yürütülebilir ancak yüksek çözünürlüklü zamanlayıcılar bu saldırıları hızlandırabilir. Chrome, riski azaltmak için site izolasyonu mimarisini ve diğer mekanizmaları kullanarak bu işlevleri yeniden etkinleştirdi ancak bu işlevler yalnızca masaüstü platformları ve Chromium tarayıcılarla sınırlıdır. Temel tarayıcı mimarisine dayalı API'lerin olması pek ideal değildir.

Kökler arası erişime kapalı olma özelliği, tarayıcıların sayfaları izole bir ortamda çalıştırması için standart bir temel sağlar. Bu sayede tarayıcılar, istenmeyen kökler arası kaynakları yükleyemez ve Spectre riski altında olmaz. Kaynaklar arası izolasyon sayesinde artık sayfaların yüksek çözünürlüklü zamanlayıcılara, SharedArrayBufferve rastgele kaynakta çapraz veri okuyabilen işlemlerde gösterilmesi güvenli olmayan diğer API'lere erişmesine izin verebiliriz.

Bu değişikliğin arka planı hakkında daha fazla bilgi edinmek için Güçlü özellikler için "kaynaklar arası izolasyon"a neden ihtiyacınız var? başlıklı makaleyi okuyun.

Unsplash'taki Linda Perez Johannessen tarafından çekilen kapak fotoğrafı.