Wydano przeglądarkę internetową Firefox 148, a także zaktualizowano poprzednie wersje z długoterminowym wsparciem — 140.8.0 i 115.33.0 (ostatnia w serii 115.x). W najbliższych godzinach wersja beta Firefox 149 zostanie udostępniona do testów, a jej wydanie planowane jest na 24 marca.
Główne nowości w Firefox 148 (1, 2, 3):
- Do ustawień dodano wcześniej obiecaną sekcję „AI Controls” do zarządzania wykorzystaniem AI. Użytkownik może jednocześnie wyłączyć wszystkie funkcje AI lub wybiórczo aktywować jedynie potrzebne funkcje. Do selektywnego wyłączania dostępne są takie możliwości związane z AI, jak tłumaczenie na inny język, rozpoznawanie tekstu na obrazach i w zeskanowanych dokumentach PDF, rekomendacje i tagi przy grupowaniu kart, generowanie skróconej zawartości strony podczas podglądu linków oraz interfejs do interakcji z chatbotami. Każda z funkcji może być włączona, dezaktywowana lub zablokowana. W przypadku blokady lokalnie instalowane modele AI są usuwane, a elementy interfejsu są ukrywane.

- Do ustawień dodano oddzielną opcję umożliwiającą włączenie nieplanowanego zdalnego stosowania poprawek i zmian między wydaniami. Wcześniej możliwość ta była związana z włączeniem telemetrii i udziałem w testowaniu eksperymentalnych funkcji (Prywatność i bezpieczeństwo > Zbieranie danych Firefox > Instaluj i uruchamiaj badania), ale od wersji Firefox 148 może być włączona niezależnie od tych ustawień.

- Obrazy tła wybrane dla strony wyświetlanej przy otwieraniu nowej karty są teraz stosowane zarówno do nowych kart domyślnych, jak i do nowych kart kontenerów.
- Dla użytkowników systemu Windows 10 i 11 dodano funkcję Firefox Backup, która umożliwia tworzenie kopii zapasowych danych przechowywanych przez przeglądarkę, takich jak zakładki, ustawienia i hasła. Do kopii zapasowej nie są włączane dane wybrane przez użytkownika do usunięcia przy zamykaniu przeglądarki. Utworzoną kopię zapasową można wykorzystać do przywrócenia stanu po reinstalacji systemu operacyjnego lub na innym komputerze.
- Zapewniono kompatybilność z siecią dla dokumentu początkowego «about:blank», który teraz jest tworzony synchronnie, a podczas nawigacji na stronie nie jest zastępowany asynchronicznie przez drugi pusty dokument generowany przez parsera (taka zamiana powodowała stan wyścigu, co czasami prowadziło do utraty zmian wprowadzanych przez JavaScript zaraz po wywołaniu window.open()).
- Mechanizm Service Worker zyskał wsparcie dla API WebGPU, co pozwala na uruchamianie operacji WebGPU w tle, na przykład w dodatkach lub podczas wykonywania wspólnych zadań dla różnych kart jednej witryny.
- W JavaScript dodano metody Iterator.zip() i Iterator.zipKeyed() do łączenia kilku tablic. Metody te pozwalają na utworzenie nowego iteratora na podstawie kilku iteratorów, gdzie każdy element przedstawia tablicę lub obiekt z wartościami iteratorów na tej samej pozycji. const str1 = «abc»; const str2 = «1234»; const it = Iterator.zip([Iterator.from(str1), Iterator.from(str2)]); for (const [char1, char2] of it) { console.log(`${char1} — ${char2}`); } // Wyświetli: // a — 1 // b — 2 // c — 3 const table = { name: [«Caroline», «Danielle», «Evelyn»], age: [30, 25, 35], city: [«Nowy Jork», «Londyn», «Hong Kong»], }; for (const { name, age, city } of Iterator.zipKeyed(table)) { console.log(`${name}, aged ${age}, lives in ${city}.`); } // Wyświetli: // Caroline, aged 30, lives in Nowym Jorku. // Danielle, aged 25, lives in Londynie. // Evelyn, aged 35, lives w Hong Kongu.
- Wprowadzono API Trusted Types, rozwijane w celu ochrony przed manipulacjami w DOM, prowadzącymi do ataków typu cross-site scripting (DOM XSS). Na przykład nieprawidłowe przetwarzanie danych otrzymanych od użytkownika w blokach eval() lub wstawieniach «.innerHTML» może prowadzić do wykonania kodu JavaScript w kontekście określonej strony. Trusted Types wymaga stosowania specjalnych obiektów TrustedHTML zamiast surowych stringów w niebezpiecznych wywołaniach, takich jak element.innerHTML, document.write() i setTimeout(). Z kolei obiekty TrustedHTML są tworzone przez funkcje napisane przez programistów, które przeprowadzają walidację i oczyszczanie danych.
- Dodano API Sanitizer, które oferuje metody do manipulacji HTML i usuwania z treści elementów HTML wpływających na wyświetlanie i działanie. Aby bezpiecznie wstawiać treści HTML, zaproponowano metodę element.setHTML(), podobną do element.innerHTML, ale chroniącą przed atakami typu cross-site scripting (XSS). Aby bezpiecznie analizować HTML, wdrożono metodę document.parseHTML(). API może być przydatne do oczyszczania danych zewnętrznych oraz usuwania z nich znaczników HTML, które mogą być używane do przeprowadzania ataków XSS. const unsanitizedString = «abc def»; const sanitizer1 = new Sanitizer({ elements: [«div», «p», «button», «script»], }); const target = document.getElementById(«target»); target.setHTML(unsanitizedString, { sanitizer: sanitizer1 });
- Dodano wsparcie dla właściwości «location.ancestorOrigins», zawierającej listę źródeł (origin) wszystkich rodziców dokumentu związanych z danym obiektem Location. W praktyce to właściwość może być używana na przykład do określenia, czy dokument jest ładowany przez iframe z innej strony.
- W API Navigation dodano obiekt NavigationPrecommitController z metodą addHandler(), która pozwala dołączyć handler, który uruchamia się podczas nawigacji na etapie «post-commit», kiedy nowy URL jest już wyświetlany w pasku adresu.
- Dodano właściwość CSS position-try-order, określającą priorytet wyboru zapasowych pozycji, gdy element z pozycjonowaniem zakotwiczonym nie mieści się na ekranie. Właściwość ta wchodzi w skład zestawu CSS Anchor Positioning, pozwalającego zarządzać wyświetlaniem elementów związanych z pozycjonowaniem innych elementów, bez użycia JavaScript, na przykład do przypinania do elementów wyskakujących okienek (popover), które pojawiają się na podobieństwo podpowiedzi.
- W CSS dodano funkcję shape(), która umożliwia formowanie kształtów z użyciem właściwości CSS clip-path i offset-path. Funkcja shape() obsługuje polecenia formowania kształtów, odpowiadające funkcji path(), ale pozwala korzystać ze standardowej składni CSS.
- W wersji Firefox dla Androida zmieniono wygląd paska narzędzi, poprawiono konfigurację zawartości paska narzędzi oraz dodano opcję szybkiego kopiowania widocznego tekstu linku bez otwierania strony.
W wersji Firefox 148, oprócz wprowadzenia nowości i poprawek błędów, usunięto 60 luk w zabezpieczeniach (sześciokrotnie więcej niż w poprzednim wydaniu). 48 z tych podatności spowodowane jest problemami z pamięcią, takimi jak przepełnienia bufora i dostęp do już zwolnionych obszarów pamięci. Potencjalnie te problemy mogą prowadzić do wykonania kodu przez atakującego po otworzeniu specjalnie przygotowanych stron. 5 podatności umożliwia obejście izolacji sandbox z powodu nieprawidłowej weryfikacji granic i przepełnienia liczby całkowitej w komponencie obsługującym grafikę.
Źródło: opennet.ru


