A avut loc lansarea browser-ului web Firefox 147, iar actualizările pentru versiunile anterioare cu suport pe termen lung — 140.7.0 și 115.32.0 — au fost finalizate. Ramura Firefox 148 a fost trecută în etapa de beta testare, iar lansarea este programată pentru 24 februarie.
Principalele noutăți în Firefox 147 (1, 2, 3):
- A fost adăugată suportul pentru specificația Freedesktop.org XDG Base Directory și posibilitatea de a utiliza directorul „~/.config/mozilla” pentru stocarea profilurilor, extensiilor, setărilor și bazelor de date interne. Suportul pentru plasarea datelor în vechiul director „~/.mozilla” a fost păstrat ca opțiune, activată la pornire prin variabila de mediu „MOZ_LEGACY_HOME=1”.
- A fost adăugat suportul pentru mecanismul „Compression Dictionary Transport” (RFC 9842), care permite reducerea dimensiunii datelor transmise între client și serverul, prin utilizarea algoritmilor de compresie Zstandard (Content-Encoding: dcz) și Brotli (Content-Encoding: dcb) în combinație cu compresia structurilor de tip ridicat folosind dicționare. Există două scenarii de utilizare a Compression Dictionary Transport — compresia conținutului pe baza dicționarelor furnizate anterior de server și utilizarea conținutului transmis anterior ca dicționar pentru compresia noii versiuni (compresie delta, în care sunt transmise doar modificările față de versiunea existentă).
De exemplu, în cazul unui request „GET /index.html”, serverul poate trimite informații despre existența unui dicționar, returnând calea către acesta în header-ul ‘Link: ; rel="compression-dictionary"‘. Când clientul descarcă dicționarul „…/dict”, serverul va oferi informații despre aplicarea acestuia la fișierele HTML, stabilind header-ul ‘Use-As-Dictionary: match="/*html"‘. La următorul request pentru un resource HTML, de exemplu „GET /index2.html”, clientul va indica informațiile despre existența dicționarului său prin header-ul ‘Available-Dictionary: hash_dicționar‘. Dacă serverul are dicționarul cu acel hash, va returna conținutul index2.html, comprimat folosind acest dicționar.
Pentru compresia delta a diferitelor versiuni de fișiere JavaScript, în răspuns la cererea „GET /app.v1.js”, serverul poate seta header-ul ‘Use-As-Dictionary: match="/app*js"‘, informând că conținutul returnat poate fi utilizat ulterior ca dicționar pentru căile „/app*js”. La solicitarea ulterioară a unui fișier care corespunde acestei măști, de exemplu „GET /app.v2.js”, clientul va transmite hash-ul dicționarului existent prin header-ul „Available-Dictionary:”, iar serverul va returna doar modificările dintre fișierele app.v1.js și app.v2.js.
- A fost adăugată pagina about:keyboard pentru configurarea combinațiilor de taste și redefinirea comenzilor rapide existente, de exemplu, pentru a stabili opțiuni mai convenabile sau pentru a evita conflictele cu alte aplicații.

- Reproducerea video a fost optimizată utilizând accelerarea hardware pentru decodarea pe GPU AMD. Pe sistemele cu GPU AMD, videoclipurile decodate hardware se reproduc acum fără copiere suplimentară a datelor (mod zero-copy), așa cum a fost implementat anterior pe sistemele cu GPU Intel și NVIDIA.
- Pentru versiunea 5, a fost actualizată implementarea protocolului Safe Browsing, folosit pentru a verifica URL-urile în vederea prezenței în listele de resurse nesigure (site-uri de phishing, pagini cu malware etc.) furnizate de Google. Noua versiune a protocolului permite descărcarea listelor de blocare pentru utilizare pe sistemul local (BD cu prefixe hash SHA256 pentru URL-urile problematice), care sunt acum aplicate în Firefox.
- A fost adăugată opțiunea de continuare automată a reproducției video în modul «imagine în imagine» în cazul în care utilizatorul schimbă tab-ul.
- În modul de protecție avansată împotriva urmăririi (ETP, Enhanced Tracking Protection => Strict) este activat implicit utilizarea specificației LNA (Local Network Access) pentru a limita accesările la sistemul local (loopback, 127.0.0.0/8) sau rețeaua internă (192.168.0.0/16, 10.0.0.0/8 etc.) când se interacționează cu site-uri publice. Accesarea resurselor interne este folosită de atacatori pentru efectuarea atacurilor CSRF asupra routerelor, punctelor de acces, imprimantelor, interfețelor web corporative și altor dispozitive și servicii care acceptă solicitări doar din rețeaua locală. În plus, scannarea resurselor interne poate fi folosită pentru identificarea indirectă sau pentru colectarea informațiilor despre rețeaua locală.
- Pe sistemele Linux cu GNOME și serverul compozit Mutter a fost rezolvată problema cu afișarea neclară a conținutului atunci când se utilizează un nivel de scalare fracțional.
- Pe computerele Apple cu cipuri Apple Silicon și sistemul de operare macOS a fost activată suportul pentru API WebGPU.
- Prioritățile de selecție a limbii (parametrii q) specificate în antetul HTTP Accept-Language sunt sincronizate cu valorile setate de alte browsere, ceea ce a rezolvat anumite probleme de portabilitate. De exemplu, pentru a doua limbă, prioritatea este acum setată la q=0.9 în loc de q=0.5, iar pentru fiecare limbă ulterioară, prioritatea scade cu 0.1.
- Biblioteca ICU a fost actualizată la versiunea 78, cu suport pentru Unicode 17 și actualizări ale datelor locale.
- În Service Worker, utilizarea modulelor JavaScript ESM (ECMAScript Module), importate și exportate prin expresiile import și export, este permisă.
- A fost adăugat suport pentru specificația CSS Module Scripts, care permite utilizarea sistemului de module JavaScript pentru importarea resurselor CSS. De exemplu: import styles from "./styles.css" with { type: "css" };
- În pseudo-elementul "::marker", care permite personalizarea parametrilor numerelor și punctelor pentru liste în blocuri <ul> și <ol>, este permisă utilizarea proprietăților CSS „counter-*” și „quotes”.
- În API-ul CompressionStream și DecompressionStream, a fost adăugat suport pentru formatul de compresie Brotli.
- În API-ul View Transitions, utilizat pentru a crea efecte de animație la comutarea între diferite stări ale DOM-ului, a fost adăugat un atribut „type”, care conține un array cu tipurile de tranziții. De asemenea, a fost adăugat selectorul CSS „:active-view-transition-type” și proprietatea document.activeViewTransition, care returnează o instanță a obiectului ViewTransition activ pentru document.
- Un set de proprietăți CSS a fost inclus pentru a gestiona afișarea elementelor, legate de poziționarea altor elemente (CSS Anchor Positioning), fără a utiliza JavaScript, de exemplu, pentru a le fixa la elemente de tip popover, care apar similar sugestiilor pop-up.
- A fost implementată specificația „Storage Access Headers”, care definește antetul cererii „Sec-Fetch-Storage-Access” și antetul răspunsului „Activate-Storage-Access” pentru a obține acces la cookie-uri de la terți fără a apela metoda document.requestStorageAccess(). Serverul poate solicita accesul la cookie-uri prin antetul „Activate-Storage-Access” și acesta va fi trimis clientului, dacă anterior utilizatorul a confirmat oferirea accesului la stocarea cookie-urilor prin API-ul Storage Access.
- În proprietatea CSS „root-font-relative” a fost adăugat suport pentru unitățile de măsură relative rcap, rch, rex și ric.
- API-ul Navigation a fost implementat, permițând aplicațiilor web să intercepteze operațiile de navigare în fereastră, să inițieze tranziții și să analizeze istoricul acțiunilor aplicației. API-ul oferă o alternativă proprietăților window.history și window.location, optimizată pentru aplicațiile web cu o singură pagină.
- În instrumentele pentru dezvoltatori web, în panoul cu reguli CSS a fost implementat suportul pentru editarea și adăugarea selectorilor de pseudo-elemente. Interfața de vizualizare a datelor în format JSON a fost completată cu un buton pentru importarea resursei în sistemul de profilare (Firefox Profiler) pentru a determina informațiile despre dimensiunea acesteia. În panourile de inspectare a elementelor HTML și animațiilor, a fost asigurat afișarea pseudo-elementelor View Transitions. În panoul cu reguli CSS a fost implementat afișarea regulilor @position-try, utilizate pentru a gestiona afișarea elementelor legate de poziția altor elemente (CSS Anchor Positioning).
- În versiunea Firefox pentru Android a fost adăugat protecția împotriva atacurilor prin canale terțe, cum ar fi Spectre, utilizat pentru a ocoli izolarea între site-uri. Anterior, o astfel de protecție era disponibilă doar în construcțiile pentru sisteme desktop.
Pe lângă noutăți și corecții de erori, în Firefox 147 au fost rezolvate 23 de vulnerabilități. 10 vulnerabilități sunt cauzate de problemele cu memoria, cum ar fi depășirile de buffer și accesarea zonelor de memorie deja eliberate. Aceste probleme pot duce potențial la execuția codului malițios atunci când se deschid pagini special concepute. 3 vulnerabilități permit ocolirea izolării sandbox din cauza verificării incorecte a limitelor și a depășirii de numere întregi în componenta de grafică.
Sursa: opennet.ro

