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 dzięki włączeniu izolacji zasobów z różnych domen to podobna metoda stosowana w przypadku SharedArrayBuffer. Izolacja między domenami to stan, w którym strona internetowa jest izolowana 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 i tak nie powinnaś/nie powinieneś polegać na bieżącej rozdzielczości.

Jeśli chcesz korzystać z wyższej rozdzielczości zegarów, na przykład w celu dokładniejszych pomiarów 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 niejawne 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 gruboziarnistych zegarów, ale można je przyspieszyć, używając zegarów o wysokiej rozdzielczości. 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 nie można bezpiecznie udostępniać w procesach, które mogą odczytywać dowolne dane między domenami.

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

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