È stato rilasciato il browser web Firefox 148 e sono state formulate aggiornamenti delle versioni precedenti con supporto a lungo termine — 140.8.0 e 115.33.0 (l'ultima nella serie 115.x). Nelle prossime ore la versione Firefox 149 entrerà nella fase di beta testing, il cui rilascio è previsto per il 24 marzo.
Novità principali in Firefox 148 (1, 2, 3):
- Nelle impostazioni è stata aggiunta la sezione «AI Controls» promettente per gestire l'uso dell'AI. L'utente può disattivare tutte le funzioni AI con un solo clic o attivare solo la funzionalità necessaria. Per la disattivazione selettiva sono disponibili opzioni legate all'AI, come la traduzione in un'altra lingua, il riconoscimento del testo nelle immagini e nei documenti PDF scannerizzati, raccomandazioni e etichette nella raggruppamento delle schede, generazione di un riepilogo del contenuto della pagina in anteprima dei link e un'interfaccia per interagire con i chatbot. Ognuna di queste funzioni può essere attivata, disattivata o bloccata. Se bloccate, i modelli AI installati localmente vengono rimossi e gli elementi dell'interfaccia vengono nascosti.

- Nelle impostazioni è stata aggiunta un'opzione separata per abilitare l'applicazione remota e non programmata di patch e modifiche tra i rilasci. In precedenza, questa possibilità era legata all'attivazione della telemetria e alla partecipazione a test di funzionalità sperimentali (Privacy & Security» > «Firefox Data collection» > «Installa e esegui studi»), ma a partire da Firefox 148 può essere attivata indipendentemente.

- Le immagini di sfondo scelte per la pagina visualizzata all'apertura di una nuova scheda ora vengono applicate sia alle nuove schede predefinite che a quelle dei contenitori.
- Per gli utenti di Windows 10 e 11 è stata aggiunta la funzione Firefox Backup, che consente di creare copie di sicurezza dei dati memorizzati nel browser, come segnalibri, impostazioni e password. I dati che l'utente ha scelto di eliminare alla chiusura del browser non sono inclusi nel backup. Il backup creato può essere utilizzato per ripristinare lo stato dopo la reinstallazione del sistema operativo o su un altro computer.
- È stata garantita la compatibilità web del documento iniziale «about:blank», che ora viene generato in modo sincrono e non viene sostituito in modalità asincrona da un secondo documento vuoto, generato dal parser, all'inizio della navigazione nella pagina (un simile cambio di documento causava una condizione di competizione, portando talvolta alla perdita delle modifiche registrate tramite JavaScript immediatamente dopo la chiamata di window.open()).
- Nel meccanismo Service worker è stata aggiunta la compatibilità con l'API WebGPU, che consente di eseguire operazioni WebGPU in background, ad esempio, nelle estensioni o durante l'esecuzione di lavori comuni per diverse schede dello stesso sito.
- In JavaScript sono stati aggiunti i metodi Iterator.zip() e Iterator.zipKeyed() per unire più array. I metodi consentono di formare un nuovo iteratore sulla base di più iteratori, dove ciascun elemento rappresenta un array o un oggetto con i valori degli iteratori nella stessa posizione. 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}`); } // Restituirà: // a — 1 // b — 2 // c — 3 const table = { name: [«Caroline», «Danielle», «Evelyn»], age: [30, 25, 35], city: [«New York», «London», «Hong Kong»], }; for (const { name, age, city } of Iterator.zipKeyed(table)) { console.log(`${name}, aged ${age}, lives in ${city}.`); } // Restituirà: // Caroline, aged 30, lives in New York. // Danielle, aged 25, lives in London. // Evelyn, aged 35, lives in Hong Kong.
- È stato implementato l'API Trusted Types, sviluppato per proteggere dalle manipolazioni del DOM che possono portare a cross-site scripting (DOM XSS). Ad esempio, la scorretta elaborazione dei dati forniti dall'utente nei blocchi eval() o nelle inserzioni «.innerHTML» può comportare l'esecuzione di codice JavaScript nel contesto di una pagina specifica. Trusted Types richiede l'uso di oggetti speciali TrustedHTML invece di stringhe grezze in chiamate pericolose, come element.innerHTML, document.write() e setTimeout(). A loro volta, gli oggetti TrustedHTML vengono creati da funzioni scritte dai programmatori, che eseguono controlli e pulizia dei dati.
- È stato aggiunto l'API Sanitizer, che fornisce metodi per manipolare HTML e rimuovere elementi HTML dal contenuto che influenzano la visualizzazione e l'esecuzione. Per l'inserimento sicuro di contenuti HTML è stato proposto il metodo element.setHTML(), simile a element.innerHTML, ma protetto contro il cross-site scripting (XSS). Per l'analisi sicura di HTML è stato implementato il metodo document.parseHTML(). L'API può essere utile per ripulire i dati in entrata e rimuovere i tag HTML che possono essere utilizzati per attacchi XSS. const unsanitizedString = «abc alert(1) def»; const sanitizer1 = new Sanitizer({ elements: [«div», «p», «button», «script»], }); const target = document.getElementById(«target»); target.setHTML(unsanitizedString, { sanitizer: sanitizer1 });
- È stata aggiunta la supporto per la proprietà «location.ancestorOrigins», che contiene un elenco di origini di tutti gli elementi genitori del documento legati all'oggetto Location specificato. Nella pratica, questa proprietà può essere utilizzata, ad esempio, per determinare il caricamento del documento tramite iframe su un altro sito.
- Nell'API Navigation è stato aggiunto l'oggetto NavigationPrecommitController con il metodo addHandler(), che consente di connettere un gestore che si attiva durante la navigazione nella fase «post-commit», quando il nuovo URL è già visualizzato nella barra degli indirizzi.
- È stata aggiunta la proprietà CSS position-try-order, che stabilisce la priorità nella selezione delle posizioni alternative quando un elemento con posizionamento ancorato non può essere posizionato sullo schermo. Questa proprietà fa parte del set CSS Anchor Positioning, che consente di gestire la visualizzazione degli elementi ancorati ad altri elementi, senza utilizzare JavaScript, ad esempio, per agganciare popup (popover) che appaiono in modo simile ai suggerimenti.
- In CSS è stata aggiunta la funzione shape(), che consente di creare forme utilizzando le proprietà CSS clip-path e offset-path. La funzione shape() supporta comandi per la creazione di forme equivalenti alla funzione path(), ma consente di utilizzare la sintassi standard CSS.
- Nella versione di Firefox per Android è stata modificata l'aspetto della barra degli strumenti, sono state migliorate le impostazioni del contenuto della barra degli strumenti ed è stata aggiunta un'opzione per copiare rapidamente il testo visibile del link senza aprire la pagina.
Oltre alle novità e alle correzioni di bug, Firefox 148 ha risolto 60 vulnerabilità (6 volte di più rispetto all'ultima versione). 48 vulnerabilità sono causate da problemi di gestione della memoria, come overflow del buffer e accesso a aree di memoria già liberate. Potenzialmente, questi problemi possono portare all'esecuzione di codice malevolo aprendo pagine appositamente create. 5 vulnerabilità consentono di aggirare l'isolamento sandbox a causa di un controllo errato dei confini e di un overflow intero nel componente grafico.
Fonte: opennet.ru


