Firma Google zaprezentowała wydanie przeglądarki internetowej Chrome 89. Jednocześnie udostępniono stabilną wersję otwartego projektu Chromium, który stanowi podstawę Chrome. Przeglądarka Chrome wyróżnia się wykorzystaniem logotypów Google, obecnością systemu wysyłania powiadomień w razie awarii, modułami do odtwarzania chronionych treści wideo (DRM), systemem automatycznej instalacji aktualizacji oraz przekazywaniem podczas wyszukiwania parametrów RLZ. Kolejne wydanie Chrome 90 zaplanowano na 13 kwietnia.
Najważniejsze zmiany w Chrome 89:
- Od teraz wersja Chrome dla Androida będzie mogła działać wyłącznie na urządzeniach certyfikowanych w Play Protect. W maszynach wirtualnych i emulatorach Chrome dla Androida będzie mógł być używany, jeśli emulowane jest obsługiwane urządzenie lub emulator został opracowany w Google. Sprawdzić, czy urządzenie jest certyfikowane, można w aplikacji Google Play w sekcji ustawień (na samym dole strony ustawień widoczny jest status „Play Protect certification”). W przypadku urządzeń niecertyfikowanych, na przykład przy korzystaniu z niestandardowego oprogramowania układowego, użytkownikom proponuje się zarejestrowanie swoich urządzeń, aby uruchomić Chrome.
- Dla niewielkiego odsetka użytkowników włączono domyślne otwieranie stron przez HTTPS podczas wpisywania nazw hostów w pasku adresu. Na przykład po wpisaniu hosta example.com domyślnie zostanie otwarta strona https://example.com, a jeśli podczas otwierania wystąpią problemy, nastąpi powrót do http://example.com. Do zarządzania domyślnym użyciem „https://” udostępniono ustawienie „chrome://flags#omnibox-default-typed-navigations-to-https”.
- Włączono obsługę profili, które pozwalają różnym użytkownikom rozdzielać swoje konta podczas korzystania z jednej przeglądarki. Na przykład za pomocą profili można zorganizować dostęp dla członków rodziny albo oddzielić sesje używane do pracy i celów prywatnych. Użytkownik może utworzyć nowy profil Chrome i skonfigurować jego aktywację po połączeniu z określonym kontem Google, dzięki czemu różni użytkownicy mogą mieć oddzielne zakładki, ustawienia i historię przeglądania. Przy próbie zalogowania się na konto przypisane do innego profilu użytkownik otrzyma propozycję przełączenia się na ten profil. Jeśli użytkownik ma powiązanie z kilkoma profilami, będzie mógł wybrać preferowany profil. Możliwe jest także przypisanie różnym profilom własnych schematów kolorów, aby wizualnie odróżnić użytkowników.

- Włączono wyświetlanie miniaturek zawartości po najechaniu kursorem na karty na górnym pasku. Wcześniej podgląd zawartości kart był domyślnie wyłączony i wymagał zmiany ustawienia «chrome://flags/#tab-hover-cards».

- Dla części użytkowników włączono funkcję «Lista do przeczytania» (Reading List, «chrome://flags#read-later»). Po jej aktywowaniu kliknięcie gwiazdki w pasku adresu powoduje wyświetlenie obok przycisku «Dodaj zakładkę» drugiego przycisku «Dodaj do listy do przeczytania», a w prawym rogu paska zakładek pojawia się menu «Lista do przeczytania», w którym widoczne są wszystkie strony dodane wcześniej do listy. Po otwarciu strony z listy zostaje ona oznaczona jako przeczytana. Strony na liście można także ręcznie oznaczać jako przeczytane lub nieprzeczytane albo usuwać z listy.

- Użytkownicy zalogowani na konto Google, ale bez włączonej synchronizacji Chrome Sync, otrzymali dostęp do metod płatności i haseł zapisanych na koncie Google. Funkcja jest udostępniana części użytkowników i będzie stopniowo włączana dla pozostałych.
- Włączono obsługę szybkiego wyszukiwania kart, która wcześniej wymagała aktywacji za pomocą flagi «chrome://flags/#enable-tab-search». Użytkownik może wyświetlić listę wszystkich otwartych kart i szybko odfiltrować potrzebną kartę, niezależnie od tego, czy znajduje się w bieżącym, czy w innym oknie.

- Dla wszystkich użytkowników wyłączono traktowanie wpisania pojedynczego słowa w pasku adresu jako próby otwarcia wewnętrznej witryny. Wcześniej po wpisaniu jednego słowa przeglądarka najpierw próbowała sprawdzić w DNS, czy istnieje host o takiej nazwie, zakładając, że użytkownik chce otworzyć subdomenę, a dopiero potem przekazywała zapytanie do wyszukiwarki. W efekcie właściciel serwera DNS wskazanego w ustawieniach użytkownika otrzymywał informacje o jednowyrazowych zapytaniach wyszukiwania, co uznano za naruszenie prywatności. Dla firm korzystających z hostów internetowych bez subdomeny (na przykład „https://helpdesk/”) udostępniono opcję przywrócenia poprzedniego działania.
- Udostępniono możliwość przypięcia określonej wersji rozszerzenia lub aplikacji. Na przykład, aby w firmie korzystać wyłącznie ze sprawdzonych rozszerzeń, administrator może za pomocą nowej polityki ExtensionSettings skonfigurować Chrome tak, aby używał własnego URL do pobierania aktualizacji zamiast URL wskazanego w manifeście rozszerzenia.
- W systemach x86 do działania przeglądarki wymagana jest teraz obsługa instrukcji SSE3 przez procesor. Instrukcje te są obsługiwane przez procesory Intel od 2003 roku, a przez AMD od 2005 roku.
- Dodano dodatkowe API, których celem jest zapewnienie funkcjonalności mogącej zastąpić pliki cookie firm trzecich używane do śledzenia aktywności użytkownika między witrynami w kodzie sieci reklamowych, widżetów mediów społecznościowych i systemów analityki webowej. Do testów udostępniono następujące API:
- Trust Token do rozróżniania użytkowników bez użycia identyfikatorów między witrynami.
- First party sets — pozwala powiązanym domenom zadeklarować wspólną relację, aby przeglądarka mogła uwzględniać to powiązanie przy odwołaniach między witrynami.
- Schemeful Same-Site rozszerza pojęcie same-site na różne schematy URL, tzn. http://website.example i https://website.examplе będą traktowane jako jedna witryna przy żądaniach między witrynami.
- Floc do określania kategorii zainteresowań użytkownika bez indywidualnej identyfikacji i bez powiązania z historią odwiedzin konkretnych witryn.
- Conversion Measurement do oceny aktywności użytkownika po przejściu z reklamy.
- User-Agent Client Hints do zastąpienia User-Agent oraz selektywnego udostępniania danych o określonych parametrach przeglądarki i systemu (wersja, platforma itp.).
- Dodano API Serial, które umożliwia stronom internetowym odczyt i zapis danych przez port szeregowy. Jako uzasadnienie wprowadzenia tego API wskazuje się możliwość tworzenia aplikacji webowych do bezpośredniego sterowania urządzeniami takimi jak mikrokontrolery i drukarki 3D. Uzyskanie dostępu do urządzenia peryferyjnego wymaga wyraźnego potwierdzenia uprawnień przez użytkownika.
- Dodano API WebHID do niskopoziomowego dostępu do urządzeń HID (Human Interface Device, klawiatury, myszy, gamepady, panele dotykowe), które pozwala zaimplementować logikę obsługi urządzenia HID w JavaScript i umożliwia pracę z rzadkimi urządzeniami HID bez obecności w systemie specyficznych sterowników. Nowe API jest przede wszystkim ukierunkowane na zapewnienie obsługi gamepadów.
- Dodano API Web NFC, które pozwala aplikacjom webowym odczytywać i zapisywać tagi NFC. Wśród przykładów zastosowania nowego API w aplikacjach webowych wymienia się udostępnianie informacji o eksponatach muzealnych, prowadzenie inwentaryzacji, pobieranie danych z identyfikatorów uczestników konferencji itp. Wysyłanie i skanowanie tagów odbywa się za pomocą obiektów NDEFWriter i NDEFReader.
- API Web Share (obiekt navigator.share) wykracza poza urządzenia mobilne i jest teraz dostępne także dla użytkowników przeglądarek desktopowych (na razie tylko dla Windows i Chrome OS). API Web Share udostępnia narzędzia do udostępniania informacji w mediach społecznościowych, na przykład pozwala wygenerować ujednolicony przycisk publikacji w serwisach społecznościowych używanych przez odwiedzającego lub zorganizować przesyłanie danych do innych aplikacji.
- W wersjach dla Androida oraz w komponencie WebView włączono obsługę dekodowania obrazów w formacie AVIF (AV1 Image Format), który wykorzystuje technologie kompresji wewnątrzklatkowej z formatu kodowania wideo AV1 (w wersjach desktopowych obsługa AVIF została włączona już w Chrome 85). Kontener do dystrybucji skompresowanych danych w AVIF jest w pełni analogiczny do HEIF. AVIF obsługuje zarówno obrazy w HDR (High Dynamic Range) i przestrzeni barw Wide-gamut, jak i w standardowym zakresie dynamiki (SDR).
- Dodano nowe Reporting API do pobierania informacji o naruszeniach zasad bezpiecznego użytkowania na stronie operacji uprzywilejowanych, określonych przez nagłówek COOP (Cross-Origin-Opener-Policy), które pozwala również przełączyć COOP w tryb debugowania działający bez blokowania naruszeń zasad.
- Dodano funkcję performance.measureUserAgentSpecificMemory(), która określa ilość pamięci zużywanej podczas przetwarzania strony.
- Aby spełnić wymagania standardu web, wszystkie adresy URL „data:” są teraz traktowane jako potencjalnie godne zaufania, czyli stanowią część bezpiecznego kontekstu.
- Do API Streams dodano obsługę strumieni bajtów (Byte Streams), które są specjalnie zoptymalizowane pod kątem wydajnego przesyłania dowolnych zestawów bajtów i minimalizują liczbę operacji kopiowania danych. Wyjście strumienia można zapisać do takich prymitywów jak ciągi znaków lub ArrayBuffer.
- W elementach SVG zaimplementowano obsługę pełnej składni właściwości „filter”, co pozwala jednocześnie stosować do elementów SVG i innych niż SVG takie funkcje filtrowania jak blur(), sepia() i grayscale().
- W CSS zaimplementowano pseudo-element „::target-text”, którego można używać do wyróżniania fragmentu, do którego nastąpiło przejście przez tekst (scroll-to-text), innym stylem niż ten stosowany przez przeglądarkę do podświetlania znalezionego tekstu.
- Dodano właściwości CSS do zarządzania zaokrągleniem rogów: border-start-start-radius, border-start-end-radius, border-end-start-radius, border-end-end-radius.
- Dodano właściwość CSS forced-colors do określenia, czy przeglądarka stosuje na stronie określoną przez użytkownika ograniczoną paletę kolorów.
- Dodano właściwość CSS forced-color-adjust, która pozwala na wyłączenie przymusowego ograniczenia kolorów dla poszczególnych elementów, pozostawiając pełną kontrolę nad kolorami przez CSS.
- W JavaScript dopuszczono użycie słowa kluczowego await na najwyższym poziomie w modułach, co pozwala płynniej integrować wywołania asynchroniczne z procesem ładowania modułów i obyć się bez opakowywania ich w „async function”. Na przykład zamiast (async function() { await Promise.resolve(console.log(‘test’)); }()); teraz można pisać await Promise.resolve(console.log(‘test’));
- W silniku JavaScript V8 przyspieszono wywoływanie funkcji w sytuacji, gdy liczba przekazanych argumentów nie odpowiada parametrom zdefiniowanym w funkcji. Przy rozbieżności liczby argumentów wydajność w trybie bez JIT wzrosła o 11.2%, a przy użyciu JIT TurboFan o 40%.
- Wprowadzono dużą liczbę drobnych usprawnień w narzędziach dla web-developerów.
Oprócz nowości i poprawek błędów w nowej wersji usunięto 47 luk bezpieczeństwa. Wiele z nich wykryto podczas zautomatyzowanych testów z użyciem narzędzi AddressSanitizer, MemorySanitizer, Control Flow Integrity, LibFuzzer i AFL. Nie ujawniono krytycznych problemów, które pozwalałyby obejść wszystkie warstwy zabezpieczeń przeglądarki i wykonać kod w systemie poza środowiskiem sandbox. Jednocześnie zaznaczono, że jedna z załatanych luk (CVE-2021-21166), związana z cyklem życia obiektów w podsystemie audio, miała charakter podatności 0-day i przed jej usunięciem była wykorzystywana w jednym z exploitów. W ramach programu nagród za wykrywanie luk bezpieczeństwa przy okazji bieżącego wydania firma Google wypłaciła 33 premie na łączną kwotę 61 000 dolarów amerykańskich (dwie premie po $10000, dwie premie po $7500, trzy premie po $5000, dwie premie po $3000, cztery po $1000 i dwie premie po $500). Wysokość 18 nagród nie została jeszcze określona.
Źródło: opennet.ru




