Google ha rilasciato la versione del browser web Chrome 99. È contemporaneamente disponibile la versione stabile del progetto open-source Chromium, che costituisce la base di Chrome. Il browser Chrome si distingue per l'uso dei loghi Google, per un sistema di invio di notifiche in caso di crash, per i moduli per la riproduzione di contenuti video protetti da copyright (DRM), per un sistema di aggiornamenti automatici e per la trasmissione dei parametri RLZ durante la ricerca. La prossima versione di Chrome 100 è prevista per il 29 marzo.
Principali novità di Chrome 99:
- In Chrome per Android è stato introdotto l'uso del meccanismo Certificate Transparency, che fornisce un registro pubblico indipendente di tutti i certificati emessi e revocati. Questo registro pubblico consente di effettuare audit indipendente di tutte le modifiche e delle azioni delle autorità di certificazione, e permetterà di rilevare immediatamente qualsiasi tentativo di creazione nascosta di voci false. I certificati non riflessi in Certificate Transparency verranno automaticamente respinti dal browser, con la visualizzazione di un errore corrispondente. In precedenza, questo meccanismo era attivo solo per la versione desktop e per una piccola percentuale di utenti Android.
- A causa dell'alto numero di segnalazioni, è stato disattivato il meccanismo di Accesso alla Rete Privata, offerto in modalità test, mirato a migliorare la protezione contro gli attacchi relativi all'accesso alle risorse della rete locale o al computer dell'utente (localhost) tramite script caricati all'apertura del sito. Per proteggersi da tali attacchi, nel caso di accesso a qualsiasi sotto-risorsa nella rete interna, è stata proposta l'invio di una richiesta esplicita per l'autorizzazione al caricamento di tali sotto-risorse. Google esaminerà l'implementazione tenendo conto dei feedback ricevuti e proporrà una versione migliorata in uno dei prossimi aggiornamenti.
- È stata ripristinata la possibilità di rimuovere i motori di ricerca proposti di default. Ricordiamo che, a partire da Chrome 97, nel configuratore, nella sezione «Gestione dei motori di ricerca» (chrome://settings/searchEngines), è stata interrotta la possibilità di rimuovere gli elementi dalla lista dei motori di ricerca di default (Google, Bing, Yahoo) e di modificare i parametri del motore di ricerca, il che ha suscitato il malcontento di molti utenti.
- Sulla piattaforma Windows è stata resa possibile la rimozione delle applicazioni web autonome (PWA, Progressive Web App) attraverso le impostazioni di sistema o pannello di controllo analogamente all'eliminazione delle applicazioni Windows.
- Si svolgono test finali per possibili interruzioni del funzionamento dei siti dopo che il browser raggiunge una versione formata da tre cifre anziché due (in passato, dopo il rilascio di Chrome 10, sono emersi molti problemi nelle librerie di analisi dell'User-Agent). Attivando l'opzione «chrome://flags#force-major-version-to-100», l'User-Agent inizierà a restituire la versione 100.
- In CSS è stata implementata la supporto per i layer a cascata, definiti tramite la regola @layer e importati tramite la regola @import, utilizzando la funzione layer(). Le regole CSS all'interno di un singolo layer a cascata si comportano in modo congiunto, semplificando la gestione dell'intera cascata, fornendo flessibilità nel modificare l'ordine dei layer e consentendo un controllo più esplicito dei file CSS, prevenendo conflitti. I layer a cascata sono particolarmente utili per i temi, per la definizione degli stili predefiniti degli elementi e per portare le stili dei componenti in librerie esterne.
- Nella classe HTMLInputElement è stato aggiunto il metodo showPicker(), che consente di visualizzare dialoghi pronti per il completamento di valori standard nei campi di tipo «date», «month», «week», «time», «datetime-local», «color» e «file», così come per i campi che supportano l'autocompletamento (autofill) e la selezione da un elenco (datalist). Ad esempio, è possibile mostrare un'interfaccia a forma di calendario per la selezione della data o una tavolozza per l'inserimento del colore.

- In modalità Origin Trials (funzionalità sperimentali che richiedono un'attivazione separata) è stata implementata la possibilità di attivare la modalità scura per le applicazioni web. I colori e lo sfondo per il tema scuro vengono selezionati tramite un nuovo campo color_scheme_dark nel file manifest dell'applicazione web. L'Origin Trial implica la possibilità di utilizzare l'API specificata da applicazioni caricate da localhost o 127.0.0.1, oppure dopo aver completato la registrazione e ricevuto un token speciale, valido per un tempo limitato per un sito specifico.
- Stabilito e reso disponibile a tutti, l'API di Riconoscimento della Scrittura a Mano consente di utilizzare i servizi di riconoscimento della scrittura forniti dal sistema operativo.
- Per le applicazioni web installabili (PWA, Progressive Web App), è stato stabilizzato il componente Window Controls Overlay, che espande l'area visibile dell'applicazione a tutta la finestra, inclusa l'area della barra del titolo, su cui si sovrappongono i pulsanti standard per il controllo della finestra (chiusura, minimizzazione, massimizzazione). L'applicazione web può gestire il rendering e l'elaborazione dell'input in tutta la finestra, ad eccezione del blocco sovrapposto con i pulsanti di controllo della finestra.
- Nella funzione CSS calc() è consentito specificare i valori 'infinity', '-infinity' e 'NaN' o espressioni che portano a valori simili, ad esempio, 'calc(1/0)'.
- Nella proprietà CSS color-scheme, che consente di definire in quali schemi di colore può essere visualizzato correttamente un elemento ('light', 'dark', 'day mode' e 'night mode'), è stato aggiunto il parametro 'only', che consente di escludere la modifica forzata dello schema dei colori per singoli elementi HTML. Ad esempio, se si specifica 'div { color-scheme: only light }', si utilizzerà solo il tema chiaro per l'elemento div, anche se il tema scuro è attivato forzatamente nel browser.
- Per modificare i valori, la proprietà document.adoptedStyleSheets può ora utilizzare le operazioni push() e pop() invece di un completo reassigning della proprietà. Ad esempio, «document.adoptedStyleSheets.push(newSheet);».
- Nell'implementazione dell'interfaccia CanvasRenderingContext2D è stata aggiunta la supporto per gli eventi ContextLost e ContextRestored, il metodo reset(), l'opzione «willReadFrequently», i modificatori CSS per il testo, il primitivo di disegno roundRect e i gradienti conici. Migliorato il supporto per i filtri SVG.
- 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 l'output di un array di oggetti Gamepad invece di GamepadList. GamepadList non è più supportato in Chrome, in linea con i requisiti della specifica e il comportamento dei motori Gecko e Webkit.
- L'API WebCodecs è stata adeguata alla specifica. In particolare, sono stati modificati il metodo EncodedVideoChunkOutputCallback() e il costruttore VideoFrame().
- Nel motore JavaScript V8 sono state aggiunte nuove proprietà all'API Intl.Locale: calendars, collations, hourCycles, numberingSystems, timeZones, textInfo e weekInfo, che restituiscono informazioni sui calendari supportati, i fusi orari e le impostazioni di tempo e testo. 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 gli sviluppatori web. Nel pannello di rete è stata introdotta la possibilità di rallentare le richieste WebSocket per facilitare il debug in condizioni di connessione lenta. È stata aggiunta una sezione per il monitoraggio dei report generati tramite API Reporting nella scheda "Application". Nella scheda Recorder ora è supportato l'attesa fino a quando un elemento diventa visibile o cliccabile prima di riprodurre il comando registrato. Semplificata l'emulazione della modalità scura. Migliorato il controllo dei pannelli su schermi touchscreen. Nella console web è stato aggiunto il supporto per le sequenze di escape per evidenziare il testo con colori, è stato introdotto il supporto per i segnaposti %s, %d, %i e %f, e migliorato il funzionamento dei filtri dei messaggi.

Oltre alle novità e alle correzioni di bug, nella nuova versione sono state risolte 28 vulnerabilità. Molte di queste vulnerabilità sono state identificate grazie a test automatizzati mediante strumenti come AddressSanitizer, MemorySanitizer, Control Flow Integrity, LibFuzzer e AFL. Non sono state riscontrate problematiche critiche in grado di eludere tutti i livelli di protezione del browser e eseguire codice nel sistema al di fuori dell'ambiente sandbox. Nell'ambito del programma di ricompensa per la scoperta di vulnerabilità, Google ha elargito 21 premi per un totale di 96.000 dollari USA (un premio di 15.000 dollari, due premi di 10.000 dollari, sei premi di 7.000 dollari, due premi di 5.000 dollari, due premi di 3.000 dollari e premi di 2.000 e 1.000 dollari).
Fonte: opennet.ru


