Firma Google zaprezentowała wydanie przeglądarki internetowej Chrome 101. Jednocześnie dostępne jest stabilne wydanie wolnego projektu Chromium, będącego podstawą Chrome. Przeglądarka Chrome różni się od Chromium używaniem logo Google, obecnością systemu powiadamiania w przypadku awarii, modułami do odtwarzania chronionych treści wideo (DRM), systemem automatycznego aktualizowania, stałym włączeniem sandboxu, dostarczaniem kluczy do Google API oraz przesyłaniem parametrów RLZ podczas wyszukiwania. Dla tych, którzy potrzebują więcej czasu na aktualizację, osobno wspierana jest gałąź Extended Stable, towarzysząca 8 tygodniom, w której przygotowane zostało uaktualnienie dla poprzedniego wydania Chrome 100. Następne wydanie Chrome 102 zaplanowane jest na 24 maja.
Główne zmiany w Chrome 101:
- Dodano funkcję Side Search, która pozwala na przeglądanie wyników wyszukiwania w bocznym panelu jednocześnie z wyświetlaniem innej strony (w jednym oknie można jednocześnie zobaczyć zarówno zawartość strony, jak i wyniki wyszukiwania). Po przejściu na jakąś stronę z wyników wyszukiwania w Google przed polem wprowadzenia w pasku adresu pojawia się ikona z literą „G”, po kliknięciu której otwiera się boczny panel z wynikami wcześniejszego wyszukiwania. Funkcja jest domyślnie wyłączona w niektórych systemach, można ją włączyć w ustawieniach „chrome://flags/#side-search”.

- W pasku adresu Omnibox zaimplementowano wstępną renderowanie (prerendering) treści rekomendacji, oferowanych podczas wpisywania. Wcześniej, aby przyspieszyć przejście z paska adresu, najbardziej prawdopodobne rekomendacje ładowano bez czekania na kliknięcie użytkownika, używając wywołania Prefetch. Teraz, oprócz ładowania, są one również renderowane w buforze (w tym uruchamiane są skrypty i tworzone jest drzewo DOM), co pozwala na natychmiastowe wyświetlenie rekomendacji po kliknięciu. Aby zarządzać wstępnym renderowaniem, proponowane są ustawienia „chrome://flags/#enable-prerender2”, „chrome://flags/#omnibox-trigger-for-prerender2” oraz „chrome://flags/#search-suggestion-for-prerender2”.
- Informacje w nagłówku HTTP User-Agent oraz parametrach JavaScript navigator.userAgent, navigator.appVersion i navigator.platform zostały ograniczone. W nagłówku pozostawiono jedynie dane dotyczące nazwy przeglądarki, istotnej wersji przeglądarki (komponenty wersji MINOR.BUILD.PATCH zostały zastąpione przez 0.0.0), platformy oraz typu urządzenia (telefon komórkowy, PC, tablet). Aby uzyskać dodatkowe dane, takie jak dokładna wersja i rozszerzone informacje o platformie, należy użyć API User Agent Client Hints. Dla witryn, które uznają, że nowe informacje są niewystarczające i nadal nie są gotowe na przejście na User Agent Client Hints, do maja 2023 roku przewidziano możliwość zwracania pełnego User-Agent.
- Zmieniono zachowanie funkcji setTimeout przy przekazywaniu zerowego argumentu określającego opóźnienie wywołania. Od Chrome 101, przy założeniu „setTimeout(…, 0)”, kod będzie wywoływany natychmiast, bez opóźnienia 1 ms, jak wymaga specyfikacja. W przypadku zagnieżdżonych wywołań setTimeout stosowane jest opóźnienie wynoszące 4 ms.
- W wersji dla platformy Android dodano wsparcie dla żądania uprawnień do wyświetlania powiadomień (w Androidzie 13, aby wyświetlać powiadomienia, aplikacja musi mieć uprawnienie „POST_NOTIFICATIONS”, bez którego wysyłanie powiadomień będzie zablokowane). Przy uruchamianiu Chrome w środowisku Android 13 przeglądarka teraz będzie wyświetlała prośbę o uzyskanie uprawnień do wyświetlania powiadomień.
- Możliwość korzystania z API WebSQL w zewnętrznych skryptach została usunięta. Domyślnie blokada WebSQL w skryptach ładowanych z innych witryn została wprowadzona w Chrome 97, ale pozostawiono możliwość wyłączenia tego zachowania. W Chrome 101 ta opcja została usunięta. W przyszłości planowane jest stopniowe całkowite zaprzestanie wsparcia dla WebSQL, niezależnie od kontekstu użycia. Zamiast WebSQL zaleca się korzystanie z API Web Storage oraz Indexed Database. Operator WebSQL oparty jest na kodzie SQLite i mógł być wykorzystywany przez przestępców do wykorzystania luk w SQLite.
- Usunięto nazwy polityk dla przedsiębiorstw (chrome://policy), zawierające nieinkluzywne terminy. Od Chrome 86 dla wskazanych polityk zaproponowano zamiany, w których stosuje się inkluzywną terminologię. Przeprowadzono czyszczenie takich terminów jak „whitelist”, „blacklist”, „native” oraz „master”. Na przykład polityka URLBlacklist została przemianowana na URLBlocklist, AutoplayWhitelist na AutoplayAllowlist, a NativePrinters na Printers.
- W trybie Origin Trials (eksperymentalne funkcje wymagające oddzielnej aktywacji) rozpoczęto testowanie API Federated Credential Management (FedCM) tylko w wersjach dla platformy Android, które pozwala na tworzenie zintegrowanych usług identyfikacyjnych, zapewniających zachowanie prywatności i działających bez mechanizmów śledzenia między witrynami, takich jak przetwarzanie plików cookie stron trzecich. Origin Trial umożliwia korzystanie z wymienionego API z aplikacji pobranych z localhost lub 127.0.0.1, lub po zarejestrowaniu się i uzyskaniu specjalnego tokena, który działa w ograniczonym czasie dla konkretnej witryny.
- Wprowadzono mechanizm Priority Hints, który umożliwia określenie ważności ładowanych zasobów poprzez dodanie atrybutu „importance” w tagach takich jak iframe, img oraz link. Atrybut ten może przyjmować wartości „auto”, „low” oraz „high”, które wpływają na kolejność ładowania zewnętrznych zasobów przez przeglądarkę.
- Dodano właściwość AudioContext.outputLatency, dzięki której można uzyskać informacje o przewidywanym opóźnieniu przed odtwarzaniem dźwięku (opóźnienie między żądaniem dźwięku a początkiem przetwarzania danych przez urządzenie wyjściowe).
- Dodano właściwość CSS font-palette oraz regułę @font-palette-values, które pozwalają na wybór palety z kolorowej czcionki lub określenie własnej palety. Ta funkcjonalność może być wykorzystywana do dopasowania kolorowych czcionek symbolowych lub emoji do koloru tła lub do włączenia trybu ciemnego lub jasnego dla czcionki.
- Dodano funkcję CSS hwb(), która oferuje alternatywną metodę określania kolorów sRGB w formacie HWB (Hue, Whiteness, Blackness), podobnym do formatu HSL (Hue, Saturation, Lightness), ale łatwiejszym do zrozumienia przez ludzi.
- W metodzie window.open() określenie właściwości popup w ciągu windowFeatures, bez przypisania wartości (tj. kiedy popup jest po prostu wskazany, a nie popup=true) jest teraz interpretowane jako aktywacja otwierania miniaturowego okna popup (analogicznie do „popup=true”), a nie przypisanie domyślnej wartości „false”, co było nielogiczne i wprowadzało deweloperów w błąd.
- W API MediaCapabilities, które dostarcza informacje o możliwościach urządzenia i przeglądarki w zakresie dekodowania treści multimedialnych (obsługiwane kodeki, profile, bitrate i rozdzielczości), dodano wsparcie dla strumieni WebRTC.
- Zaproponowano trzecią wersję API Secure Payment Confirmation, która dostarcza narzędzi do dodatkowego potwierdzania wykonywanej operacji płatniczej. W nowej wersji dodano wsparcie identyfikatorów wymagających wprowadzenia danych, definiowania ikony do wskazywania błędu weryfikacji oraz opcjonalnej właściwości payeeName.
- W API USBDevice dodano metodę forget() do cofania wcześniej przyznanych uprawnień użytkownika do dostępu do urządzenia USB. Ponadto, instancje USBConfiguration, USBInterface, USBAlternateInterface i USBEndpoint są teraz równe przy ścisłym porównaniu ("===", wskazując na ten sam obiekt), jeśli zostały zwrócone dla tego samego obiektu USBDevice.
- Wprowadzono ulepszenia w narzędziach dla deweloperów webowych. Umożliwiono import i eksport zarejestrowanych działań użytkownika w formacie JSON (przykład). W konsoli webowej i interfejsie przeglądania kodu poprawiono kalkulację i wyświetlanie prywatnych właściwości. Dodano wsparcie dla modelu kolorów HWB. W panelu CSS dodano możliwość przeglądania warstw kaskadowych definiowanych za pomocą reguły @layer.

Oprócz nowości i poprawek w nowej wersji usunięto 30 podatności. Wiele z tych podatności zostało ujawnionych w wyniku zautomatyzowanego testowania narzędziami AddressSanitizer, MemorySanitizer, Control Flow Integrity, LibFuzzer i AFL. Nie wykryto krytycznych problemów, które pozwalałyby na obejście wszystkich poziomów ochrony przeglądarki i wykonanie kodu w systemie poza środowiskiem piaskownicy. W ramach programu wypłat nagród za odkrycie podatności, w bieżącej wersji firma Google wypłaciła 25 nagród na łączną kwotę 81 tysięcy dolarów USA (jedna nagroda wynosząca 10 tysięcy dolarów, trzy nagrody po 7500 dolarów, trzy nagrody po 7000 dolarów, jedna nagroda 6000 dolarów, dwie nagrody po 5000 dolarów, cztery nagrody po 2000 dolarów, trzy nagrody po 1000 dolarów i jedna nagroda 500 dolarów). Wysokość 6 nagród nie została jeszcze określona.
Źródło: opennet.ru


