Google ha presentato il rilascio del browser web Chrome 99. È disponibile contemporaneamente una versione stabile del progetto open source Chromium, che costituisce la base di Chrome. Il browser Chrome si distingue per l'uso dei loghi Google, la presenza di un sistema di invio di notifiche in caso di crash, moduli per la riproduzione di contenuti video protetti da copyright (DRM), un sistema di aggiornamenti automatici e la trasmissione di parametri RLZ durante la ricerca. Il prossimo rilascio di Chrome 100 è previsto per il 29 marzo.
Le principali novità di Chrome 99:
- In Chrome per Android è stato attivato l'uso del meccanismo di Certificate Transparency, che garantisce la registrazione indipendente di un registro pubblico di tutti i certificati emessi e revocati. Il registro pubblico consente di effettuare audit indipendenti di tutte le modifiche e le azioni delle autorità di certificazione, e permette di monitorare immediatamente eventuali tentativi di creazione furtiva di registri falsi. I certificati non inclusi in Certificate Transparency verranno automaticamente rifiutati dal browser, con la visualizzazione di un errore corrispondente. Questo meccanismo era stato precedentemente attivato solo per la versione desktop e per una piccola percentuale di utenti Android.
- A causa di numerosi reclami, è stato disattivato il meccanismo di Accesso alla Rete Privata, precedentemente proposto in modalità test, mirato a rafforzare la protezione contro gli attacchi legati all'accesso a risorse nella rete locale o sul computer dell'utente (localhost) da script caricati all'apertura del sito. Per proteggere contro tali attacchi, nel caso di accesso a sotto-risorse nella rete interna, è stato proposto di inviare una richiesta esplicita di autorizzazione per il caricamento di tali sotto-risorse. Google rivedrà l'implementazione alla luce dei feedback ricevuti e proporrà una versione migliorata in uno dei futuri rilasci.
- È stata ripristinata la possibilità di rimuovere i motori di ricerca proposti per impostazione predefinita. Ricordiamo che a partire da Chrome 97, nel configuratore nella sezione "Gestione motori di ricerca" (chrome://settings/searchEngines) è stata interrotta la possibilità di eliminare elementi dalla lista dei motori di ricerca predefiniti (Google, Bing, Yahoo) e di modificare le impostazioni del motore di ricerca, suscitando il malcontento di molti utenti.
- Sulla piattaforma Windows è stata introdotta la possibilità di rimuovere le applicazioni web autonome (PWA, Progressive Web App) tramite le impostazioni di sistema o dashboard per analogia con la rimozione delle applicazioni Windows.
- Si sta eseguendo un test finale per possibili interruzioni nel funzionamento dei siti web dopo che il browser raggiunge una versione composta da tre cifre invece che due (in passato, dopo il rilascio di Chrome 10, sono emersi numerosi problemi nelle librerie di analisi dell'User-Agent). Attivando l'opzione «chrome://flags#force-major-version-to-100», nell'intestazione dell'User-Agent inizia a essere restituita la versione 100.
- In CSS è stata implementata la supporto per i livelli a cascata, definiti tramite la regola @layer e importabili attraverso la regola CSS @import, utilizzando la funzione layer(). Le regole CSS all'interno di un singolo livello a cascata si combinano insieme, semplificando la gestione dell'intera cascata e offrendo flessibili possibilità di modifica dell'ordine dei livelli e consentendo un controllo più esplicito dei file CSS, prevenendo conflitti. I livelli a cascata sono particolarmente utili per temi, definizione degli stili predefiniti per gli elementi e per estrarre la formattazione dei componenti in librerie esterne.
- Alla classe HTMLInputElement è stato aggiunto il metodo showPicker(), che consente di visualizzare i dialoghi pronti per la compilazione dei valori predefiniti nei campi con i tipi «date», «month», «week», «time», «datetime-local», «color» e «file», nonché per i campi che supportano la compilazione automatica (autofill) e la selezione da un elenco (datalist). Ad esempio, è possibile mostrare un'interfaccia sotto forma di calendario per selezionare una data o una tavolozza per inserire un colore.

- In modalità Origin Trials (funzionalità sperimentali che richiedono attivazione separata) è stata implementata la possibilità di attivare una modalità scura per le applicazioni web. Colori e sfondo per il tema scuro vengono scelti tramite un nuovo campo color_scheme_dark nel file di manifest del web application. L'Origin Trial implica la possibilità di lavorare con l'API specificata da applicazioni caricate da localhost o 127.0.0.1, o dopo aver completato la registrazione e ricevuto un token speciale, valido per un tempo limitato per un sito specifico.
- Stabilito e reso disponibile a chiunque desideri utilizzare l'API di Riconoscimento della Scrittura a Mano, che consente di utilizzare i servizi di riconoscimento dell'input scritto a mano forniti dal sistema operativo.
- Per le web app installabili (PWA, Progressive Web App) è stato stabilizzato il componente Window Controls Overlay, che espande l'area visiva dell'applicazione a tutto il finestrino, inclusa l'area della barra del titolo, su cui si sovrappongono i pulsanti di controllo della finestra standard (chiusura, minimizzazione, massimizzazione). L'app web può gestire il rendering e l'elaborazione dell'input su tutta la finestra, ad eccezione del blocco sovrapposto con i pulsanti di controllo della finestra.
- Nelle funzioni CSS calc() è consentito specificare i valori «infinity», «-infinity» e «NaN» oppure espressioni che portano a tali valori, ad esempio, ‘calc(1/0)’.
- Nella proprietà CSS color-scheme, che permette di definire in quali schemi di colore l'elemento può essere visualizzato correttamente («light», «dark», «day mode» e «night mode»), è stata aggiunta l'opzione «only», che consente di escludere la modifica forzata dello schema dei colori per alcuni elementi HTML. Ad esempio, se si specifica «div { color-scheme: only light }», per l'elemento div sarà utilizzato solo il tema chiaro, anche se nel browser è forzata l'attivazione di un'interfaccia scura.
- Per modificare i valori della proprietà document.adoptedStyleSheets ora possono essere applicate le operazioni push() e pop() invece di un completo ripristino della proprietà. Ad esempio, «document.adoptedStyleSheets.push(newSheet);».
- È stata aggiunta al contesto CanvasRenderingContext2D il supporto per gli eventi ContextLost e ContextRestored, il metodo reset(), le opzioni «willReadFrequently», i modificatori CSS per il testo, il primitive di rendering roundRect e i gradienti conici. È migliorato il supporto per i filtri SVG.
- Sono stati rimossi i prefissi «-webkit-» per le proprietà «text-emphasis», «text-emphasis-color», «text-emphasis-position» e «text-emphasis-style».
- Per le pagine aperte senza HTTPS è vietato l'accesso all'API Battery Status, che fornisce informazioni sullo stato della batteria.
- Nel metodo navigator.getGamepads() è stato garantito il ritorno di un array di oggetti Gamepad anziché GamepadList. GamepadList non è più supportato in Chrome, il che è conforme ai requisiti dello standard e al comportamento dei motori Gecko e Webkit.
- L'API WebCodecs è stata allineata alle specifiche. In particolare, sono stati modificati il metodo EncodedVideoChunkOutputCallback() e il costruttore VideoFrame().
- Nel motore JavaScript V8, l'API Intl.Locale ha ricevuto nuove proprietà calendars, collations, hourCycles, numberingSystems, timeZones, textInfo e weekInfo, che forniscono informazioni sui calendari, i fusi orari e le impostazioni di tempo e testo supportati. const arabicEgyptLocale = new Intl.Locale('ar-EG') // ar-EG arabicEgyptLocale.calendars // ['gregory', 'coptic', 'islamic', 'islamic-civil', 'islamic-tbla'] arabicEgyptLocale.collations // ['compat', 'emoji', 'eor'] arabicEgyptLocale.hourCycles // ['h12'] arabicEgyptLocale.numberingSystems // ['arab'] arabicEgyptLocale.timeZones // ['Africa/Cairo'] arabicEgyptLocale.textInfo // { direction: 'rtl' } japaneseLocale.textInfo // { direction: 'ltr' } chineseTaiwanLocale.textInfo // { direction: 'ltr' }
- È stata aggiunta la funzione Intl.supportedValuesOf(code), che restituisce un array di identificatori supportati per l'API Intl per le proprietà calendar, collation, currency, numberingSystem, timeZone e unit. Intl.supportedValuesOf('unit') // ['acre', 'bit', 'byte', 'celsius', 'centimeter', …]
- Sono stati apportati miglioramenti agli strumenti per sviluppatori web. Nella rete è stata fornita la possibilità di rallentare le richieste WebSocket per il debug in condizioni di connessione lenta. Nella scheda "Application" è stata aggiunta una sezione per monitorare i rapporti generati tramite API Reporting. Nel pannello Recorder, prima della riproduzione del comando registrato, è stata implementata la funzionalità di attesa finché l'elemento non diventa visibile o cliccabile. È stata semplificata l'emulazione del tema scuro. È stato migliorato il controllo dei pannelli da schermi tattili. Nella console web è stato aggiunto il supporto per le sequenze di escape per evidenziare il testo con il colore, è stato aggiunto il supporto per le maschere di sostituzione %s, %d, %i e %f, e sono stati migliorati i filtri dei messaggi.

Oltre alle nuove funzionalità e alla correzione di bug, la nuova versione ha risolto 28 vulnerabilità. Molte di queste vulnerabilità sono state identificate grazie ai test automatizzati condotti con gli strumenti AddressSanitizer, MemorySanitizer, Control Flow Integrity, LibFuzzer e AFL. Non sono stati rilevati problemi critici che consentirebbero di aggirare tutti i livelli di protezione del browser e di eseguire codice nel sistema al di fuori dell'ambiente sandbox. Nell'ambito del programma di ricompensa per la scoperta di vulnerabilità, l'azienda Google ha corrisposto 21 premi per un totale di 96 mila dollari (un premio di $15000, due premi di $10000, sei premi di $7000, due premi di $5000, due premi di $3000 e un premio di $2000 e uno di $1000.
Fonte: opennet.ru


