Google ha presentato il rilascio del browser web Chrome 95. Contestualmente, è disponibile anche la versione stabile del progetto open source Chromium, alla base di Chrome. Il browser Chrome si distingue per l'uso dei loghi Google, un sistema di invio di notifiche in caso di arresto anomalo, moduli per la riproduzione di contenuti video protetti (DRM), un sistema di aggiornamento automatico e la trasmissione dei parametri RLZ durante le ricerche. In linea con il nuovo ciclo di sviluppo di 4 settimane, il prossimo rilascio di Chrome 96 è previsto per il 16 novembre. Per coloro che hanno bisogno di più tempo per l'aggiornamento, è supportata una ramificazione Extended Stable, della durata di 8 settimane, in cui è stato formato l'aggiornamento per l'ultima versione di Chrome 94.
Le principali novità in Chrome 95:
- Per gli utenti di Linux, Windows, macOS e ChromeOS è stata introdotta una nuova barra laterale, visualizzata a destra del contenuto e attivata cliccando su un'icona speciale nella barra degli indirizzi. Nella barra viene mostrato un riepilogo con le schede e un elenco di lettura. Questa modifica non è attivata per tutti gli utenti; per abilitarla, è possibile utilizzare l'impostazione «chrome://flags/#side-panel».

- È stata implementata la possibilità di richiedere esplicitamente l'autorizzazione per salvare gli indirizzi inseriti nei moduli web, per un successivo utilizzo nel sistema di completamento automatico dei moduli. Quando vengono trovati indirizzi nei moduli, ora viene mostrato un dialogo che consente all'utente di salvare l'indirizzo, modificarlo, aggiornare un indirizzo precedentemente salvato o rifiutare il salvataggio.
- Rimosso il codice per supportare il protocollo FTP. Con Chrome 88, il supporto FTP è stato disabilitato per impostazione predefinita, ma è stata mantenuta un'opzione per riattivarlo.
- È cessato il supporto per URL con nomi host che terminano con un numero, ma non corrispondono agli indirizzi IPv4. Ad esempio, gli URL «http://127.1/», «http://foo.127.1/» e «http://127.0.0.0.1» verranno ora considerati non validi.
- Per WebAssembly è stata implementata la possibilità di creare gestori di eccezioni che possono intercettare l'esecuzione in caso di un'eccezione durante l'esecuzione di un determinato codice. Sono supportate sia l'intercettazione di eccezioni conosciute del modulo WebAssembly che di eccezioni durante la chiamata di funzioni importate. Per intercettare le eccezioni, il modulo WebAssembly deve essere compilato con un compilatore che supporti le eccezioni, come Emscripten.
È stato osservato che la gestione delle eccezioni a livello di WebAssembly consente di ridurre notevolmente la dimensione del codice generato, rispetto alla gestione delle eccezioni tramite JavaScript. Ad esempio, la compilazione dell'ottimizzatore Binaryen con gestione delle eccezioni tramite JavaScript porta a un aumento del codice del 43%, mentre utilizzando WebAssembly l'aumento è solo del 9%. Inoltre, utilizzando la modalità di ottimizzazione «-O3», il codice con gestione delle eccezioni tramite WebAssembly è praticamente identico in termini di prestazioni a quello senza gestori di eccezioni, mentre la gestione delle eccezioni tramite JavaScript comporta una riduzione delle prestazioni del 30%.
- L'uso congiunto dei moduli WebAssembly tra domini diversi (cross-origin) è vietato quando si gestisce lo stesso sito.
- Nella modalità Origin Trials (funzionalità sperimentali che richiedono un'attivazione separata), sono state aggiunte diverse nuove API. L'Origin Trial permette l'accesso a queste API da applicazioni caricate da localhost o 127.0.0.1, oppure dopo registrazione e ottenimento di un token speciale, valido per un tempo limitato per un sito specifico.
- È attivata la riduzione delle informazioni nell'intestazione HTTP User-Agent e nei parametri JavaScript navigator.userAgent, navigator.appVersion e navigator.platform. Nell'intestazione vengono conservate solo le informazioni sul nome del browser, sulla versione principale del browser, sulla piattaforma e sul tipo di dispositivo (telefono cellulare, PC, tablet). Per ottenere dati aggiuntivi, come la versione esatta e dati avanzati sulla piattaforma, è necessario utilizzare l'API User Agent Client Hints. L'inizio della riduzione di User-Agent sui sistemi degli utenti comuni è previsto con il rilascio di Chrome 102, che sarà pubblicato tra sei mesi.
- È stata proposta la possibilità di creare gestori di accesso (Access Handles) per l'API File System Access, consentendo alle web app di leggere e scrivere dati direttamente in file e directory sul dispositivo dell'utente. Per ridurre i metodi di accesso delle web app al file system, Google prevede di unire l'API File System Access con Storage Foundation. Come fase preparatoria per tale unione, è stata proposta la supporto ai gestori di accesso, che integra i metodi di lavoro basati su gestori di file con funzionalità avanzate, come la possibilità di impostare blocchi di scrittura da altri processi e la creazione di flussi separati per scrittura e lettura, compresa la supporto di lettura e scrittura da worker in modalità sincrona.
- È stato stabilito e proposto come predefinito l'API Secure Payment Confirmation con l'implementazione di una nuova estensione 'payment', che fornisce una conferma aggiuntiva per l'operazione di pagamento effettuata. La parte verificante, ad esempio, la banca, ha la possibilità di generare una chiave pubblica PublicKeyCredential, che può essere richiesta dal venditore per una conferma sicura aggiuntiva del pagamento tramite l'API Payment Request, utilizzando il metodo di pagamento 'secure-payment-confirmation'.
- Negli invocazioni di callback impostati tramite il costruttore PerformanceObserver, è stata implementata la trasmissione della proprietà droppedEntriesCount, che consente di comprendere quante metriche di prestazione del sito siano state scartate a causa del fatto che non sono state contenute nel buffer fornito.
- Aggiunto l'API EyeDropper, che consente di richiamare l'interfaccia fornita dal browser per determinare il colore di pixel arbitrari sullo schermo, che può essere utilizzata, ad esempio, nei programmi di grafica implementati come applicazioni web. const eyeDropper = new EyeDropper(); const result = await eyeDropper.open(); // result = {sRGBHex: '#160731'}
- È stata aggiunta la funzione self.reportError(), che consente agli script di visualizzare errori nella console, emulando l'insorgere di un'eccezione non gestita.
- Aggiunto l'API URLPattern, per verificare la corrispondenza di un URL con un determinato modello, che può essere utilizzato, ad esempio, per l'analisi dei link e per il reindirizzamento delle richieste ai gestori nel service worker. const p = new URLPattern({ protocol: 'https', hostname: 'example.com', pathname: '/:folder/*/:fileName.jpg', });
- Espanso l'API Intl.DisplayNames, tramite il quale è possibile ottenere nomi localizzati di lingue, paesi, valute, elementi di data, ecc. Nella nuova versione sono stati aggiunti nuovi tipi di nomi «calendar» e «dateTimeField», attraverso cui si possono ottenere nomi localizzati del calendario e dei campi di data e ora (ad esempio, i nomi dei mesi). Per il tipo «language» è stata aggiunta la supporto per l'uso dei dialetti delle lingue.
- Nell'API Intl.DateTimeFormat è stata aggiunta la supporto per nuovi valori del parametro timeZoneName: «shortGeneric» per l'output di un identificatore breve del fuso orario (ad esempio, «PT», «ET»), «longGeneric» — lungo («Pacific Time», «Mountain Time»), «shortOffset» — con uno spostamento breve rispetto a GMT («GMT+5») e «longOffset» con uno spostamento lungo rispetto a GMT («GMT+0500»).
- L'API U2F (Cryptotoken) è stato dichiarato obsoleto; utilizzare invece l'API Web Authentication. L'API U2F sarà disabilitata per impostazione predefinita nella versione 98 di Chrome e rimossa completamente nella versione 104 di Chrome.
- Sono stati apportati miglioramenti agli strumenti per gli sviluppatori web. Nel pannello Styles è stato semplificato il processo di modifica delle proprietà CSS relative alle dimensioni (altezza, padding, ecc.). Nella scheda Issues è stata aggiunta l'opzione per nascondere singoli problemi. Nella console web e nei pannelli Sources e Properties è stato migliorato il rendering delle proprietà (le proprietà personalizzate ora sono in grassetto e mostrate in cima all'elenco).

Oltre alle nuove funzionalità e correzioni di bug, nella nuova versione sono state risolte 19 vulnerabilità. Molte di queste vulnerabilità sono state scoperte grazie a test automatizzati utilizzando strumenti come AddressSanitizer, MemorySanitizer, Control Flow Integrity, LibFuzzer e AFL. Non sono emersi problemi critici che consentirebbero di eludere i livelli di sicurezza del browser e eseguire codice nella sistema al di fuori dell'ambiente sandbox. Nell'ambito del programma di ricompensa per la segnalazione di vulnerabilità per l'attuale rilascio, Google ha assegnato 16 premi per un totale di 74.000 dollari USA (un premio di 20.000 $, due premi di 10.000 $, un premio di 7.500 $, un premio di 6.000 $, tre premi di 5.000 $ e un premio di 3.000 $, 2.000 $ e 1.000 $). L'importo di 5 premi è ancora da determinare.
Fonte: opennet.ru


