Firma Google zaprezentowała wydanie przeglądarki internetowej Chrome 97. Jednocześnie dostępna jest stabilna wersja projektu open-source Chromium, który stanowi podstawę Chrome. Przeglądarka Chrome różni się od innych używaniem logo Google, systemem powiadomień w przypadku awarii, modułami do odtwarzania zabezpieczonej treści wideo (DRM), automatycznym systemem aktualizacji oraz przesyłaniem parametrów RLZ podczas wyszukiwania. Dla tych, którzy potrzebują więcej czasu na aktualizację, oddzielnie wspierana jest gałąź Extended Stable, która trwa przez 8 tygodni i zawiera aktualizację dla poprzedniej wersji Chrome 96. Następne wydanie Chrome 98 zaplanowane jest na 1 lutego.
Główne zmiany w Chrome 97:
- Dla części użytkowników w konfiguracji zastosowano nowy interfejs zarządzania danymi przechowywanymi po stronie przeglądarki ("chrome://settings/content/all"). Kluczową różnicą nowego interfejsu jest fokus na dostosowanie uprawnień oraz jednoczesne czyszczenie wszystkich ciasteczek witryny, bez możliwości przeglądania szczegółowych informacji o poszczególnych ciasteczkach i wybiórczego usuwania ciasteczek. Zdaniem Google, dostęp do zarządzania poszczególnymi ciasteczkami dla przeciętnego użytkownika, który nie zna się na subtelnościach web developmentu, może prowadzić do nieprzewidywalnych zakłóceń w działaniu stron z powodu nieprzemyślanej zmiany pojedynczych parametrów oraz przypadkowego wyłączenia mechanizmów ochrony prywatności aktywowanych za pośrednictwem ciasteczek. Dla tych, którzy potrzebują manipulacji pojedynczymi ciasteczkami, zaleca się korzystanie z sekcji zarządzania przechowalnią w narzędziach dla web developerów (Application/Storage/Cookie).

- W sekcji z informacjami o stronie wprowadzono możliwość wyświetlania krótkiego opisu strony (na przykład opisu z Wikipedii), jeśli w ustawieniach aktywowany jest tryb optymalizacji wyszukiwania i nawigacji (opcja "Make searches and browsing better").

- Udoskonalono obsługę automatycznego uzupełniania pól w formularzach internetowych. Rekomendacje z opcjami uzupełnienia teraz są wyświetlane z niewielkim przesunięciem i są oznaczone ikonami informacyjnymi dla łatwiejszego podglądu oraz wizualnego określenia związku z uzupełnianym polem. Na przykład, ikona profilu wskazuje, że proponowane uzupełnienie dotyczy pól związanych z adresem i informacjami kontaktowymi.

- Zarządzanie pamięcią profili użytkowników zostało poprawione, co zapewnia usunięcie ich danych po zamknięciu powiązanych okien przeglądarki. Wcześniej profile pozostawały w pamięci i kontynuowały prace związane z synchronizacją oraz wykonywaniem skryptów w tle, co prowadziło do nieuzasadnionego zużycia zasobów w systemach, w których jednocześnie używano kilku profili (np. gościnny profil i powiązanie z kontem Google). Dodatkowo wprowadzono dokładniejsze czyszczenie danych, które pozostają podczas korzystania z profilu.
- Ulepszono stronę ustawień wyszukiwarek („Ustawienia > Zarządzaj wyszukiwarkami”). Wyłączono automatyczne aktywowanie silników wyszukiwania, których informacje są dostarczane przy otwieraniu witryny za pomocą skryptu OpenSearch — nowe silniki do przetwarzania zapytań wyszukiwania z paska adresu muszą teraz być aktywowane ręcznie w ustawieniach (wcześniej automatycznie aktywowane silniki będą działać bez zmian).
- Od 17 stycznia do katalogu Chrome Web Store nie będą przyjmowane rozszerzenia używające drugiej wersji manifestu Chrome, jednak deweloperzy wcześniej dodanych rozszerzeń, jak dotąd, będą mogli publikować aktualizacje.
- Dodano eksperymentalne wsparcie dla specyfikacji WebTransport, określającej protokół i towarzyszące API JavaScript do wysyłania i odbierania danych między przeglądarką a serwerem. Kanał komunikacyjny jest zorganizowany na bazie HTTP/3 z użyciem protokołu QUIC jako transportu. WebTransport może być używany zamiast mechanizmu WebSockets, oferując dodatkowe możliwości, takie jak organizacja przesyłania w wielu strumieniach, jednokierunkowe strumienie, przesyłanie bez uwzględnienia kolejności pakietów (out-of-order), oraz niezawodne i niezawodne tryby dostarczania. Dodatkowo, WebTransport może być stosowany zamiast mechanizmu Server Push, z którego korzystanie w Chrome zostało porzucone przez firmę Google.
- W obiektach JavaScript Array i TypedArrays dodano metody findLast i findLastIndex, które umożliwiają wyszukiwanie elementów z wynikiem względem końca tablicy. [1,2,3,4].findLast((el) => el % 2 === 0) // → 4 (ostatni parzysty element)
- Zamknięte (bez atrybutu „open”) elementy HTML , są teraz dostępne dla wyszukiwania i linków, oraz automatycznie rozwijają się podczas korzystania z wyszukiwania na stronie oraz nawigacji w fragmentach (ScrollToTextFragment).
- Ograniczenia Content Security Policy (CSP) w nagłówkach odpowiedzi serwera teraz obowiązują również dla dedykowanych workerów, które wcześniej były traktowane jako oddzielne dokumenty.
- Zapewniło to wyraźne żądanie uprawnień do ładowania dowolnych subzasobów z wewnętrznej sieci — przed dostępem do wewnętrznej sieci lub localhost na serwerze głównej witryny teraz wysyłane jest żądanie CORS (Cross-Origin Resource Sharing) z nagłówkiem „Access-Control-Request-Private-Network: true”, wymagające potwierdzenia operacji poprzez zwrócenie nagłówka „Access-Control-Allow-Private-Network: true”.
- Dodano właściwość CSS font-synthesis, umożliwiającą kontrolowanie możliwości syntezowania przez przeglądarkę brakujących stylów czcionek (oblique, bold i small-cap), które są nieobecne w wybranej rodzinie czcionek.
- Dla transformacji CSS w funkcji perspective() wprowadzono parametr ‘none’, który jest traktowany jako nieskończona wartość podczas organizacji animacji.
- Do nagłówka HTTP Permissions-Policy (Feature Policy), używanego do delegowania uprawnień i włączania zaawansowanych funkcji, dodano wsparcie dla wartości keyboard-map, umożliwiającej użycie API Keyboard. Wprowadzono metodę Keyboard.getLayoutMap(), która pozwala określić, który klawisz został naciśnięty, biorąc pod uwagę różne układy klawiatury (na przykład, naciśnięty klawisz w układzie rosyjskim lub angielskim).
- Dodano metodę HTMLScriptElement.supports(), ujednolicającą określenie nowych możliwości dostępnych w elemencie „script”, na przykład można poznać listę obsługiwanych wartości dla atrybutu „type”.
- Proces normalizacji nowych linii podczas wysyłania formularzy webowych dostosowano do silników przeglądarek Gecko i WebKit. Normalizacja znaków nowej linii i powrotu karetki (zamiana /r i /n na \r\n) w Chrome jest teraz realizowana na końcowym etapie, a nie na początku przetwarzania wysyłania formularza (tj. pośrednie obsługiwacze, korzystające z obiektu FormData, zobaczą dane takie, jakie dodał użytkownik, a nie w znormalizowanej formie).
- Standaryzacja nazw właściwości dla API Client Hints, rozwijanego jako zamiennik nagłówka User-Agent, umożliwiającego selektywne przekazywanie danych o konkretnych parametrów przeglądarki i systemu (wersja, platforma itd.) tylko po żądaniu serwera. Właściwości są teraz określane z prefiksem „sec-ch-”, na przykład sec-ch-dpr, sec-ch-width, sec-ch-viewport-width, sec-ch-device-memory, sec-ch-rtt, sec-ch-downlink i sec-ch-ect.
- Zastosowano drugi etap deprecjacji wsparcia dla API WebSQL, którego wywołania z zewnętrznych skryptów będą teraz blokowane. W przyszłości planowane jest stopniowe całkowite zaprzestanie wsparcia dla WebSQL, niezależnie od kontekstu użycia. Obsługa WebSQL oparta jest na kodzie SQLite i mogła być wykorzystywana przez złośliwych użytkowników do eksploatacji luk w SQLite.
- Dla platformy Windows włączono kompilację z kontrolami integralności przepływu wykonania (CFG, Control Flow Guard), które blokują próby wstrzyknięcia kodu do procesu Chrome. Dodatkowo, do usług sieciowych uruchamianych w osobnych procesach teraz stosuje się izolację w piaskownicy, ograniczając możliwości kodu w tych procesach.
- W Chrome dla Androida włączono mechanizm dynamicznego aktualizowania dziennika wydanych i cofniętych certyfikatów (Certificate Transparency), który wcześniej został aktywowany w wersjach dla systemów desktopowych.
- Wprowadzone zostały ulepszenia w narzędziach dla web deweloperów. Zrealizowano eksperymentalne wsparcie dla synchronizacji ustawień DevTools pomiędzy różnymi urządzeniami. Dodano nowy panel Recorder, za pomocą którego można nagrywać, odtwarzać i analizować działania użytkownika na stronie.

Podczas wyświetlania błędów w konsoli webowej zapewniono wyświetlanie numerów kolumn związanych z problemem, co jest pomocne w debugowaniu problemów w zminimalizowanym kodzie JavaScript. Zaktualizowano listę urządzeń, które można symulować w celu oceny wyświetlania strony na urządzeniach mobilnych. W interfejsie edycji bloków HTML (Edytuj jako HTML) dodano podświetlenie składni oraz możliwość autouzupełniania.

Oprócz nowości i poprawek błędów w nowej wersji usunięto 37 luk bezpieczeństwa. Wiele z luk zostało wykrytych w wyniku zautomatyzowanego testowania narzędziami AddressSanitizer, MemorySanitizer, Control Flow Integrity, LibFuzzer oraz AFL. Jednej z luk nadano status krytycznej, ponieważ pozwala na obejście wszystkich poziomów ochrony przeglądarki i wykonanie kodu w systemie, poza środowiskiem piaskownicy. Szczegóły dotyczące krytycznej luki (CVE-2022-0096) nie zostały jeszcze ujawnione, wiadomo jedynie, że jest ona związana z dostępem do już zwolnionej pamięci w kodzie do pracy z wewnętrznymi magazynami (API Storage).
W ramach programu wypłaty nagród pieniężnych za wykrywanie luk bezpieczeństwa w bieżącej wersji, firma Google wypłaciła 24 nagrody o łącznej wartości 54 tysięcy dolarów USA (trzy nagrody po 10 000 dolarów, dwie nagrody po 5 000 dolarów, jedna nagroda po 4 000 dolarów, trzy nagrody po 3 000 dolarów oraz jedna nagroda po 1 000 dolarów). Wartość 14 nagród nie została jeszcze ustalona.
Źródło: opennet.ru





