Google ha presentato il rilascio del browser web Chrome 94. È contemporaneamente disponibile una versione stabile del progetto open source Chromium, che funge da base per Chrome. Il browser Chrome si distingue per l'utilizzo dei loghi Google, un sistema di invio di notifiche in caso di crash, moduli per la riproduzione di contenuti video protetti (DRM), un sistema di installazione automatica degli aggiornamenti e la trasmissione dei parametri RLZ durante le ricerche. Il prossimo rilascio di Chrome 95 è previsto per il 19 ottobre.
Con il lancio di Chrome 94, lo sviluppo è stato trasferito a un nuovo ciclo di preparazione delle versioni. In futuro, i nuovi rilasci significativi verranno pubblicati ogni 4 settimane, anziché ogni 6 settimane, consentendo di velocizzare l'introduzione di nuove funzionalità per gli utenti. Si nota che l'ottimizzazione del processo di preparazione delle versioni e il miglioramento del sistema di test consentono di generare rilasci più frequenti senza compromettere la qualità. Per le aziende e per coloro che necessitano di più tempo per gli aggiornamenti, sarà rilasciata separatamente una versione Extended Stable ogni 8 settimane, che permetterà di passare a nuove versioni funzionali non ogni 4 settimane, ma ogni 8 settimane.
Le principali novità di Chrome 94:
- È stata introdotta la modalità HTTPS-First, simile a quella HTTPS Only già presente in Firefox. Quando attivata nelle impostazioni, se si tenta di aprire una risorsa non crittografata tramite HTTP, il browser cercherà inizialmente di accedere al sito tramite HTTPS e, se questa operazione non riesce, verrà mostrato all'utente un avviso riguardante l'assenza del supporto HTTPS, con la possibilità di aprire il sito senza crittografia. In futuro, Google prevede di attivare HTTPS-First di default per tutti gli utenti, limitando l'accesso ad alcune funzionalità delle piattaforme web per le pagine aperte in HTTP e aggiungendo ulteriori avvisi per informare gli utenti sui rischi associati all'accesso a siti non crittografati. La modalità si abilita nella sezione delle impostazioni "Privacy e sicurezza" > "Sicurezza" > "Avanzate".

- Per le pagine aperte senza HTTPS, è vietato inviare richieste (caricare risorse) a URL locali (ad esempio, "http://router.local" e localhost) e a intervalli di indirizzi interni (127.0.0.0/8, 192.168.0.0/16, 10.0.0.0/8, ecc.). Sono fatte eccezioni solo per le pagine caricate da server, che hanno un IP interno. Ad esempio, una pagina caricata con server 1.2.3.4 non potrà accedere a una risorsa ospitata sull'IP 192.168.0.1 o sull'IP 127.0.0.1, mentre una caricata dal server 192.168.1.1 potrà farlo. Questo cambiamento introduce un ulteriore livello di protezione contro l'esploitazione delle vulnerabilità nei gestori che accettano richieste su IP locali, e permette anche di difendersi da attacchi di tipo «DNS rebinding».
- È stata aggiunta la funzione «Sharing Hub», che consente di condividere rapidamente con altri utenti il link alla pagina corrente. È possibile generare un codice QR con l'URL, salvare la pagina, inviare il link a un altro dispositivo associato all'account dell'utente e condividere il link su siti esterni come Facebook, WhatsApp, Twitter e VK. Al momento, questa funzionalità non è disponibile per tutti gli utenti. Per forzare l'attivazione del pulsante «Share» nel menu e nella barra degli indirizzi, è possibile utilizzare le impostazioni «chrome://flags/#sharing-hub-desktop-app-menu» e «chrome://flags/#sharing-hub-desktop-omnibox».

- È stata effettuata una ristrutturazione nell'interfaccia di impostazione del browser. Ogni sezione delle impostazioni viene ora visualizzata su una pagina separata, anziché su un'unica pagina generale.

- È stata implementata la supporto per l'aggiornamento dinamico del registro dei certificati emessi e revocati (Certificate Transparency), che ora verrà aggiornato senza essere legato all'aggiornamento del browser.
- Aggiunta la pagina di servizio «chrome://whats-new» con una panoramica delle modifiche visibili all'utente nella nuova versione. La pagina viene visualizzata automaticamente subito dopo l'aggiornamento o è accessibile tramite il pulsante «Cosa c'è di nuovo» nel menu Aiuto. Attualmente, nella pagina sono menzionate la ricerca nelle schede, la possibilità di separare i profili e la funzione di cambiamento del colore di sfondo, che non sono specifiche per Chrome 94 e sono apparse nelle versioni precedenti. La visualizzazione della pagina è al momento attivata solo per alcuni utenti: per gestire l'attivazione è possibile utilizzare le impostazioni «chrome://flags#chrome-whats-new-ui» e «chrome://flags#chrome-whats-new-in-main-menu-new-badge».

- È stato dichiarato obsoleto l'accesso all'API WebSQL da contenuti caricati da siti di terze parti (ad esempio tramite iframe). In Chrome 94, quando si tenta l'accesso a WebSQL da script esterni, viene visualizzato un avviso, ma a partire da Chrome 97 tali accessi saranno bloccati. In futuro, è previsto di interrompere gradualmente il supporto per WebSQL, indipendentemente dal contesto di utilizzo. Il gestore di WebSQL è basato su codice SQLite e potrebbe essere stato utilizzato da malintenzionati per sfruttare vulnerabilità presenti in SQLite.
- Per motivi di sicurezza e per prevenire attività dannose, è iniziato il blocco dell'uso del protocollo obsoleto MK (URL:MK), un tempo utilizzato in Internet Explorer e che consentiva alle applicazioni web di estrarre informazioni da file compressi.
- È stata interrotta la sincronizzazione con le versioni più vecchie di Chrome (Chrome 48 e precedenti).
- Nell'intestazione HTTP Permissions-Policy, destinata a consentire determinate funzionalità e gestire l'accesso alle API, è stato aggiunto il supporto per il flag «display-capture», che consente di gestire l'utilizzo dell'API Screen Capture sulla pagina (per impostazione predefinita, la possibilità di catturare contenuti dello schermo da iframe esterni è bloccata).
- 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.
- È stato aggiunto l'API WebGPU, che sostituisce l'API WebGL e fornisce strumenti per eseguire operazioni sulla GPU, come il rendering e i calcoli. Concepito concettualmente, WebGPU è simile agli API Vulkan, Metal e Direct3D 12. Differisce da WebGL nello stesso modo in cui l'API grafica Vulkan si distingue da OpenGL, ma non si basa su un particolare API grafico, bensì rappresenta un livello universale che utilizza gli stessi primitivie a basso livello disponibili in Vulkan, Metal e Direct3D 12.
WebGPU fornisce alle applicazioni JavaScript strumenti per un controllo a basso livello sull'organizzazione, l'elaborazione e l'invio di comandi alla GPU, oltre a gestire risorse correlate, memoria, buffer, oggetti texture e shader grafici compilati. Questo approccio consente di ottenere prestazioni superiori nelle applicazioni grafiche riducendo i costi generali e aumentando l'efficienza nell'uso della GPU. L'API consente inoltre di creare progetti 3D complessi per il Web che funzionano altrettanto bene quanto programmi indipendenti, ma senza essere legati a piattaforme specifiche.
- Per le applicazioni PWA isolate è stata implementata la possibilità di registrarsi come gestori degli URL. Ad esempio, l'applicazione music.example.com può registrarsi come gestore dell'URL https://*.music.example.com e tutti i collegamenti da applicazioni esterne, come messaggeri e client email, porteranno all'apertura di questa applicazione PWA invece di una nuova scheda nel browser.
- È stato implementato il supporto per un nuovo codice di risposta HTTP — 103, che può essere utilizzato per l'anteprima degli header. Il codice 103 consente di informare il client sui contenuti di alcuni header HTTP subito dopo la richiesta, senza attendere che il server esegua tutte le operazioni associate e inizi a restituire il contenuto. In questo modo è possibile fornire suggerimenti sui collegamenti a elementi collegati alla pagina restituita, che possono essere caricati in anticipo (ad esempio, possono essere forniti riferimenti ai CSS e JavaScript utilizzati nella pagina). Ricevendo informazioni su tali risorse, il browser inizierà a caricarle senza attendere la fine della restituzione della pagina principale, riducendo così il tempo totale di elaborazione della richiesta.
- È stato aggiunto l'API WebGPU, che sostituisce l'API WebGL e fornisce strumenti per eseguire operazioni sulla GPU, come il rendering e i calcoli. Concepito concettualmente, WebGPU è simile agli API Vulkan, Metal e Direct3D 12. Differisce da WebGL nello stesso modo in cui l'API grafica Vulkan si distingue da OpenGL, ma non si basa su un particolare API grafico, bensì rappresenta un livello universale che utilizza gli stessi primitivie a basso livello disponibili in Vulkan, Metal e Direct3D 12.
- È stato aggiunto l'API WebCodecs per gestire flussi multimediali a basso livello, complementare agli API di alto livello HTMLMediaElement, Media Source Extensions, WebAudio, MediaRecorder e WebRTC. Questo nuovo API potrebbe rivelarsi utile in settori come lo streaming di giochi, l'applicazione di effetti sul client, la ricodifica dei flussi e il supporto per contenitori multimediali non standard. Invece di implementare codec separati in JavaScript o WebAssembly, l'API WebCodecs offre accesso a componenti ad alte prestazioni già integrati nel browser. In particolare, l'API WebCodecs fornisce decoder e encoder audio e video, decoder di immagini e funzioni per lavorare con singoli fotogrammi video a basso livello.
- API Insertable Streams stabilizzato, che consente di manipolare flussi multimediali grezzi trasmessi tramite l'API MediaStreamTrack, come i dati della fotocamera e del microfono, il risultato della cattura dello schermo o i dati intermedi del decodificatore. Per la rappresentazione dei fotogrammi grezzi vengono utilizzate le interfacce WebCodec, dopodiché viene generato un flusso simile a quello che gli API WebRTC Insertable Streams generano sulla base delle RTCPeerConnections. Da un punto di vista pratico, il nuovo API consente l'implementazione di funzionalità come l'applicazione di metodi di apprendimento automatico per identificare o annotare oggetti in tempo reale o per aggiungere effetti, come la rimozione dello sfondo, prima della codifica o dopo la decodifica del codec.
- Il metodo stabilizzato scheduler.postTask() consente di gestire la pianificazione dell'esecuzione dei compiti (callback JavaScript) con vari livelli di priorità. Sono disponibili tre livelli di priorità: 1 - esecuzione in modo prioritario, anche se potrebbero essere bloccate le operazioni dell'utente; 2 - sono consentite modifiche visibili all'utente; 3 - esecuzione in background. Per modificare la priorità e annullare i compiti, è possibile utilizzare l'oggetto TaskController.
- Stabilizzato e ora distribuito al di fuori dell'API Origin Trials, l'API Idle Detection per rilevare l'inattività dell'utente. L'API consente di determinare il momento in cui l'utente non interagisce con la tastiera/mouse, è attivato il salvaschermo, lo schermo è bloccato o un altro lavoro è in esecuzione su un altro monitor. L'informazione dell'applicazione riguardo all'inattività avviene tramite l'invio di una notifica al raggiungimento della soglia di inattività prestabilita.
- Il processo di gestione del colore negli oggetti CanvasRenderingContext2D e ImageData è formalizzato, permettendo l'uso dello spazio colore sRGB. È stata fornita la possibilità di creare oggetti CanvasRenderingContext2D e ImageData in spazi colore diversi da sRGB, come Display P3, per sfruttare le funzionalità avanzate dei moderni monitor.
- Nell'API VirtualKeyboard sono stati aggiunti metodi e proprietà per gestire la visualizzazione e l'occultamento della tastiera virtuale, oltre a fornire informazioni sulle dimensioni della tastiera virtuale mostrata.
- In JavaScript per le classi è stata introdotta la possibilità di utilizzare blocchi statici di inizializzazione per raggruppare codice eseguito una sola volta durante l'elaborazione della classe: class C { // Il blocco verrà eseguito durante l'elaborazione della classe stessa static { console.log('Blocco statico di C'); } }
- Nelle proprietà CSS flex-basis e flex sono stati implementati le parole chiave content, min-content, max-content e fit-content per una gestione più flessibile delle dimensioni dell'area principale del Flexbox.
- È stata aggiunta la proprietà CSS scrollbar-gutter per gestire la prenotazione dello spazio dello schermo per la barra di scorrimento. Ad esempio, quando il contenuto non richiede lo scorrimento, è possibile espandere l'output e occupare l'area della barra di scorrimento.
- È stata aggiunta l'API Self Profiling con l'implementazione di un sistema di profilazione che consente di misurare il tempo di esecuzione di JavaScript sul lato client per il debug dei problemi di prestazioni nel codice JavaScript, senza dover ricorrere a manipolazioni manuali nell'interfaccia per sviluppatori web.
- Dopo la rimozione del plugin Flash, è stato deciso di restituire valori vuoti nelle proprietà navigator.plugins e navigator.mimeTypes. Tuttavia, alcuni applicativi utilizzavano queste proprietà per verificare la presenza di plugin per la visualizzazione di file PDF. Poiché Chrome dispone di un visualizzatore PDF integrato, d'ora in poi, le proprietà navigator.plugins e navigator.mimeTypes restituiranno un elenco fisso di plugin standard e MIME type per la visualizzazione di PDF: "PDF Viewer, Chrome PDF Viewer, Chromium PDF Viewer, Microsoft Edge PDF Viewer e WebKit built-in PDF".
- Sono stati apportati miglioramenti agli strumenti per gli sviluppatori web. Nel menu di simulazione degli schermi sono stati aggiunti i dispositivi Nest Hub e Nest Hub Max. Nella sezione di ispezione dell'attività di rete è stata aggiunta un'opzione per invertire i filtri (ad esempio, impostando il filtro "status-code: 404" è possibile visualizzare rapidamente tutte le altre richieste), e sono disponibili i valori originali degli header Set-Cookie (per valutare la presenza di valori errati eliminati durante la normalizzazione). La barra laterale nella console web è stata dichiarata obsoleta e sarà rimossa in uno dei prossimi rilasci. È stata aggiunta un'opzione sperimentale per nascondere i problemi nella scheda Issues. Nelle impostazioni è stata aggiunta la possibilità di scegliere la lingua dell'interfaccia.

Inoltre alle novità e alle correzioni degli errori, nella nuova versione sono state eliminate 19 vulnerabilità. Molte di queste sono state individuate grazie a test automatizzati utilizzando strumenti come AddressSanitizer, MemorySanitizer, Control Flow Integrity, LibFuzzer e AFL. Non sono state rilevate problematiche critiche in grado di bypassare tutti i livelli di protezione del browser e di eseguire codice nel sistema al di fuori dell'ambiente sandbox. Nell'ambito del programma di ricompense per la scoperta di vulnerabilità relativo all'attuale rilascio, Google ha erogato 17 premi per un totale di 56.500 dollari USA (un premio di 15.000 dollari, due premi di 10.000 dollari, un premio di 7.500 dollari, quattro premi di 3.000 dollari, due premi di 1.000 dollari). L'importo di 7 premi non è ancora stato definito.
Fonte: opennet.ru





