Google ha presentato il rilascio del browser web Chrome 101. È disponibile simultaneamente anche la versione stabile del progetto open source Chromium, che costituisce la base di Chrome. Il browser Chrome si distingue da Chromium per l'uso dei loghi Google, la presenza di un sistema di invio di notifiche in caso di arresto, moduli per la riproduzione di contenuti video protetti da copyright (DRM), un sistema di aggiornamenti automatici, l'attivazione continua della sandbox per l'isolamento, la fornitura di chiavi per Google API e la trasmissione dei parametri RLZ durante la ricerca. Per coloro che hanno bisogno di più tempo per l'aggiornamento, è supportata separatamente una versione Extended Stable, che viene mantenuta per 8 settimane e include un aggiornamento per la precedente versione di Chrome 100. Il prossimo rilascio di Chrome 102 è previsto per il 24 maggio.
Principali novità in Chrome 101:
- È stata aggiunta la funzione Side Search, che consente di visualizzare i risultati della ricerca nella barra laterale mentre si naviga in un'altra pagina (in un'unica finestra è possibile vedere sia il contenuto della pagina che il risultato della ricerca). Dopo essere passati a un sito da una pagina con i risultati di ricerca di Google, appare un'icona con la lettera 'G' prima del campo di input nella barra degli indirizzi; cliccando su di essa, si apre la barra laterale con i risultati della ricerca effettuata in precedenza. Di default, questa funzione non è attivata su tutti i sistemi; è possibile attivarla utilizzando l'impostazione 'chrome://flags/#side-search'.

- Nella barra degli indirizzi dell'Omnibox è implementato il prerendering proattivo dei contenuti delle raccomandazioni, offerti man mano che si digita. In precedenza, per accelerare la transizione dalla barra degli indirizzi, le raccomandazioni più probabili venivano caricate senza attendere il clic dell'utente, utilizzando la chiamata Prefetch. Ora, oltre al caricamento, vengono anche renderingate in buffer (inclusi i script eseguiti e la generazione dell'albero DOM), il che consente di garantire un'istantanea visualizzazione delle raccomandazioni dopo il clic. Per gestire il prerendering sono state proposte impostazioni come «chrome://flags/#enable-prerender2», «chrome://flags/#omnibox-trigger-for-prerender2» e «chrome://flags/#search-suggestion-for-prerender2».
- Le informazioni nel campo HTTP User-Agent e nei parametri JavaScript navigator.userAgent, navigator.appVersion e navigator.platform sono state ridotte. Nel campo rimangono solo le informazioni sul nome del browser, sulla versione principale del browser (composta da MINOR.BUILD.PATCH sostituiti con 0.0.0), sulla piattaforma e sul tipo di dispositivo (smartphone, PC, tablet). Per ottenere dati aggiuntivi, come la versione esatta e informazioni avanzate sulla piattaforma, è necessario utilizzare l'API User Agent Client Hints. Per i siti che non dispongono di queste nuove informazioni e non sono ancora pronti a passare agli User Agent Client Hints, è prevista la possibilità di restituire il completo User-Agent fino a maggio 2023.
- Il comportamento della funzione setTimeout è stato modificato quando si passa un argomento nullo che definisce il ritardo chiamata. A partire da Chrome 101, specificando «setTimeout(…, 0)», il codice verrà eseguito immediatamente, senza un ritardo di 1 ms, come richiesto dalla specifica. Per le chiamate setTimeout nidificate ripetute, si applica un ritardo di 4 ms.
- Nella versione per la piattaforma Android è stata implementata la richiesta di autorizzazione per le notifiche (su Android 13, per visualizzare le notifiche, l'app deve avere il permesso «POST_NOTIFICATIONS», altrimenti l'invio delle notifiche sarà bloccato). All'avvio di Chrome in Android 13, il browser ora presenterà una richiesta per ottenere l'autorizzazione alla visualizzazione delle notifiche.
- È stata rimossa la possibilità di utilizzare l'API WebSQL in script di terze parti. Di default, il blocco di WebSQL negli script caricati non dal sito attuale è stato attivato in Chrome 97, ma era presente un'opzione per disattivare questo comportamento. In Chrome 101, questa opzione è stata rimossa. In futuro, si prevede di interrompere gradualmente il supporto di WebSQL, indipendentemente dal contesto di utilizzo. Al suo posto, si consiglia di utilizzare le API Web Storage e Indexed Database. Il gestore WebSQL si basa sul codice SQLite e potrebbe essere stato utilizzato da malintenzionati per sfruttare vulnerabilità in SQLite.
- I nomi delle policy aziendali (chrome://policy) contenenti termini non inclusivi sono stati rimossi. A partire da Chrome 86, le politiche indicate hanno suggerito sostituzioni che utilizzano una terminologia inclusiva. È stata effettuata una pulizia di termini come «whitelist», «blacklist», «native» e «master». Ad esempio, la politica URLBlacklist è stata rinominata in URLBlocklist, AutoplayWhitelist in AutoplayAllowlist, e NativePrinters in Printers.
- In modalità Origin Trials (funzionalità sperimentali che richiedono un'attivazione separata), è iniziata la sperimentazione dell'API Federated Credential Management (FedCM) solo nelle versioni per la piattaforma Android, permettendo di creare servizi di identificazione unificati che garantiscono la privacy e funzionano senza meccanismi di tracciamento cross-site, come la gestione dei Cookie di terze parti. L'Origin Trial prevede la possibilità di lavorare con l'API indicata da applicazioni caricate da localhost o 127.0.0.1, o dopo registrazione e ricezione di un token speciale valido per un tempo limitato per un sito specifico.
- È stato stabilito e reso disponibile a tutti un meccanismo Priority Hints, che consente di specificare l'importanza delle risorse da caricare tramite l'attributo aggiuntivo «importance» nei tag come iframe, img e link. L'attributo può assumere i valori «auto», «low» e «high», che influenzano l'ordine di caricamento delle risorse esterne da parte del browser.
- È stata aggiunta la proprietà AudioContext.outputLatency, che permette di ottenere informazioni sulla latenza prevista prima dell'uscita del suono (latencia tra la richiesta di suono e l'inizio dell'elaborazione dei dati ricevuti dal dispositivo di uscita audio).
- È stata introdotta la proprietà CSS font-palette e la regola @font-palette-values, che consentono di selezionare una palette da un font colorato o di definire una palette personalizzata. Ad esempio, questa funzionalità può essere utilizzata per abbinare i colori dei font simbolici colorati o degli emoji al tema del contenuto, oppure per attivare la modalità scura o chiara per il font.
- È stata aggiunta la funzione CSS hwb(), che offre un metodo alternativo per specificare i colori sRGB nel formato HWB (Hue, Whiteness, Blackness), simile al formato HSL (Hue, Saturation, Lightness), ma più semplice da percepire per l'occhio umano.
- Nel metodo window.open(), l'indicazione della proprietà popup nella stringa windowFeatures, senza assegnazione di valore (cioè quando viene semplicemente indicato popup, e non popup=true) ora viene trattata come un'attivazione per l'apertura di una finestra popup in miniatura (simile a "popup=true") invece di assegnare come valore predefinito "false", cosa che era illogica e portava in errore gli sviluppatori.
- Nell'API MediaCapabilities, che fornisce informazioni sulle capacità del dispositivo e del browser per la decodifica dei contenuti multimediali (codec supportati, profili, bitrate e risoluzioni), è stata aggiunta la supporto per i flussi WebRTC.
- È stata proposta la terza versione dell'API Secure Payment Confirmation, che fornisce strumenti per la conferma aggiuntiva delle operazioni di pagamento. Nella nuova versione è stata aggiunta la supporto per identificatori che richiedono l'inserimento di dati, la definizione di un'icona per indicare il fallimento della verifica e una proprietà opzionale payeeName.
- Nell'API USBDevice è stato aggiunto il metodo forget() per revocare i permessi precedentemente concessi dall'utente per accedere ai dispositivi USB. Inoltre, le istanze di USBConfiguration, USBInterface, USBAlternateInterface e USBEndpoint ora sono uguali in una comparazione rigorosa (===, puntano a un unico oggetto) se restituiti per lo stesso oggetto USBDevice.
- Sono stati apportati miglioramenti agli strumenti per gli sviluppatori web. È stata fornita la possibilità di importare ed esportare in formato JSON le azioni registrate dall'utente (esempio). Nella console web e nell'interfaccia di visualizzazione del codice è stato migliorato il calcolo e la visualizzazione delle proprietà private. È stata aggiunta la supporto per la gestione del modello colore HWB. Nella sezione CSS è stata introdotta la possibilità di visualizzare i livelli di cascade definiti tramite la regola @layer.

Oltre alle nuove funzionalità e alla correzione di bug, la nuova versione ha eliminato 30 vulnerabilità. Molte di queste vulnerabilità sono state identificate attraverso test automatizzati utilizzando strumenti come AddressSanitizer, MemorySanitizer, Control Flow Integrity, LibFuzzer e AFL. Non sono state trovate problematiche critiche che consentano di eludere 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 segnalazione di vulnerabilità per il rilascio attuale, Google ha assegnato 25 premi per un totale di 81.000 dollari (un premio di $10.000, tre premi di $7.500, tre premi di $7.000, un premio di $6.000, due premi di $5.000, quattro premi di $2.000, tre premi di $1.000 e un premio di $500). Il valore di 6 premi deve ancora essere definito.
Fonte: opennet.ru


