Dopasowywanie liczników czasu do ograniczeń izolowanych od zasobów z innych źródeł

Przed wersją 91 rozdzielczość zegara w Chrome była ograniczona do 5 mikrosekund na komputerach, na których włączona jest izolacja witryn, oraz do 100 mikrosekund na urządzeniach z Androidem, na których nie jest ona włączona.

Począwszy od wersji 91, po zmianie specyfikacji, Chrome będzie ograniczać rozdzielczość jawnych minutników (performance.now(), performance.timeOrigin i innych interfejsów API dotyczących wydajności, które udostępniają DOMHighResTimestamps) do 100 mikrosekund na wszystkich platformach. Po włączeniu izolacji zasobów z innych domen witryny mogą złagodzić ograniczenie do 5 mikrosekund niezależnie od platformy.

Uzyskiwanie bardziej zaawansowanych funkcji przez włączenie izolacji zasobów z różnych domen to analogiczne podejście do SharedArrayBuffer. Izolacja między domenami to stan, w którym strona internetowa jest odizolowana od innych źródeł z wyjątkiem tych, które zostały dodane.

Czy muszę coś z tym zrobić?

Raczej nie. performance.now() została ograniczona do znacznie bardziej ogólnych rozdzielczości w innych przeglądarkach (np.1 ms = 0, 001 s), więc nie powinnaś/nie powinieneś polegać na bieżącej rozdzielczości.

Jeśli chcesz korzystać z wyższej rozdzielczości w przypadku zegarów, na przykład aby uzyskać dokładniejsze pomiary wydajności, musisz mieć pewność, że Twoja witryna jest odizolowana między domenami. Dzięki temu uzyskasz lepszą rozdzielczość zarówno w Chrome i innych przeglądarkach opartych na Chromium, jak i w Firefoxie.

Jaki związek mają minutniki z izolacją zasobów z innych domen?

Po odkryciu podatności Spectre producenci przeglądarek postanowili ograniczyć działanie zegarów do bardziej ogólnych rozdzielczości (a także dostępność obiektów SharedArrayBuffer, które mogą służyć jako domyślne zegary). Dzieje się tak, ponieważ ataki Spectre oraz podobne ataki spekulacyjne oparte na pomiarach czasu trwania określonych operacji następnie zgadują zawartość pamięci procesu.

Ataki spekulacyjne można wykonywać przy użyciu grubych zegarów, ale zegary o wysokiej rozdzielczości mogą je przyspieszyć. Chrome używa architektury izolacji witryn oraz innych mechanizmów, aby ograniczyć ryzyko i ponownie włączyć te funkcje, ale są one dostępne tylko na platformach komputerowych i w przeglądarkach Chromium. Interfejsy API oparte na podstawowej architekturze przeglądarki nie są idealne.

Izolacja zasobów z innych domen zapewnia przeglądarkom standardową podstawę do uruchamiania stron w odizolowanym środowisku, dzięki czemu nie mogą one wczytywać zasobów z innych domen bez zgody użytkownika. W związku z tym nie są one narażone na zagrożenia związane z użyciem Spectre. Dzięki izolacji między domenami możemy teraz zezwalać stronom na dostęp do zegarów o wysokiej rozdzielczości,SharedArrayBufferi innych interfejsów API, których udostępnianie w procesach, które mogą odczytywać dowolne dane między domenami, jest niebezpieczne.

Więcej informacji o tłem tej zmiany znajdziesz w artykule Dlaczego potrzebujesz „izolacji między domenami” do korzystania z zaawansowanych funkcji.

Zdjęcie na okładce: Linda Perez Johannessen, Unsplash.