L'azienda Google ha presentato il rilascio del browser web Chrome 105. È disponibile contemporaneamente anche la versione stabile del progetto open source Chromium, che costituisce la base di Chrome. Il browser Chrome si differenzia da Chromium per l'uso dei loghi Google, la presenza di un sistema per l'invio di notifiche in caso di crash, moduli per la riproduzione di contenuti video protetti da copyright (DRM), un sistema di installazione automatica degli aggiornamenti, l'attivazione costante della sandbox per l'isolamento, la fornitura di chiavi per le API Google e la trasmissione di parametri RLZ durante le ricerche. Per coloro che necessitano di più tempo per l'aggiornamento, è supportata separatamente la versione Extended Stable, accompagnata da 8 settimane. Il prossimo rilascio di Chrome 106 è previsto per il 27 settembre.
Modifiche principali in Chrome 105:
- È stata interrotta la supporto per le applicazioni web specializzate Chrome Apps, sostituite ora da applicazioni web distinte basate sulla tecnologia Progressive Web Apps (PWA) e sulle Web API standard. Google aveva inizialmente annunciato l'intenzione di abbandonare le Chrome Apps nel 2016 e prevedeva di interrompere il loro supporto entro il 2018, ma poi ha posticipato questo piano. In Chrome 105, quando si tenta di installare le Chrome Apps, verrà visualizzato un avviso riguardo alla cessazione del supporto, ma le applicazioni continueranno a funzionare. In Chrome 109, la possibilità di eseguire le Chrome Apps verrà disabilitata.
- È stata garantita un'ulteriore isolamento per il processo 'renderer', responsabile del rendering. Questo processo ora viene eseguito in un contenitore aggiuntivo (App Container), implementato sopra l'esistente sistema di sandbox. In caso di sfruttamento di una vulnerabilità nel codice di rendering, le limitazioni aggiuntive impediranno all'attaccante di accedere alla rete, grazie al divieto di accesso alle chiamate di sistema correlate alle funzionalità di rete.
- È stato implementato uno store unificato di certificati radice degli enti certificatori (Chrome Root Store). Nuovo store non è ancora attivato di default e fino al completamento dell'implementazione i certificati verranno ancora verificati utilizzando uno store specifico per ciascun sistema operativo. La soluzione in fase di test ricorda l'approccio di Mozilla, che supporta un store indipendente di certificati radice per Firefox, utilizzato come primo anello per la verifica della catena di fiducia dei certificati durante l'apertura di siti via HTTPS.
- È iniziata la preparazione alla dismissione del supporto per l'API Web SQL, che non è standardizzato, viene utilizzato poco e richiede una revisione per soddisfare le moderne esigenze di sicurezza. In Chrome 105 è vietato accedere a Web SQL da codice caricato senza HTTPS, è inoltre stata aggiunta una segnalazione in DevTools sull'obsolescenza della tecnologia. Nel 2023 si prevede di rimuovere l'API Web SQL. Per gli sviluppatori che necessitano di funzionalità simili, verrà preparata una sostituzione basata su WebAssembly.
- In Chrome sync è terminato il supporto per la sincronizzazione con Chrome 73 e versioni precedenti.
- Per le piattaforme macOS e Windows è attivato il visualizzatore di certificati integrato, che ha sostituito la chiamata all'interfaccia fornita dal sistema operativo. In precedenza, il visualizzatore integrato era utilizzato solo nelle versioni per Linux e ChromeOS.
- Sono state aggiunte nella versione per Android le impostazioni per gestire l'API "Topics & Interest Group", promossa nell'ambito dell'iniziativa Privacy Sandbox, che consente di identificare le categorie di interesse dell'utente e di utilizzarle al posto dei cookie di tracciamento per raggruppare gli utenti con interessi simili senza identificare singoli utenti. Nella versione precedente, simili impostazioni erano state aggiunte per Linux, ChromeOS, macOS e Windows.
- Abilitando la protezione avanzata del browser (Safe Browsing > Enhanced protection), è stata implementata la raccolta di dati telemetrici su estensioni installate, accesso all'API e connessione a siti esterni. I dati vengono utilizzati sui server Google per rilevare attività dannose e violazioni delle regole da parte delle estensioni del browser.
- È stata trasferita nella categoria obsoleta e sarà bloccata nella versione di Chrome 106 la possibilità di utilizzare caratteri non-ASCII nei domini specificati nell'intestazione Cookie (per i domini IDN, è necessario indicare i domini nel formato punycode). Questa modifica allineerà il browser ai requisiti della RFC 6265bis e al comportamento implementato in Firefox.
- È stato proposto un API Custom Highlight, progettato per consentire modifiche arbitrarie allo stile delle aree di testo evidenziate, permette di non limitarsi allo stile fisso fornito dal browser per le aree evidenziate (::selection, ::inactive-selection) e per l'evidenziazione degli errori di sintassi (::spelling-error, ::grammar-error). Nella prima versione dell'API è stato fornito il supporto per modificare il colore del testo e lo sfondo tramite i pseudo-elementi color e background-color, ma in futuro saranno aggiunte altre possibilità di personalizzazione dello stile.
Come esempio di compiti che possono essere risolti mediante il nuovo API, viene citato l'aggiunta a framework web che forniscono strumenti per l'editing di testo, meccanismi propri per l'evidenziazione del testo, diverse evidenziazioni durante la modifica simultanea da parte di più utenti, ricerca in documenti virtualizzati e annotazione di errori durante la verifica ortografica. In passato, per creare evidenziazioni non standard era necessario effettuare operazioni complesse sull'albero DOM, ma l'API Custom Highlight fornisce operazioni pronte per l'aggiunta e la rimozione dell'evidenziazione, senza influenzare la struttura del DOM e applicando stili in relazione agli oggetti Range.
- È stata aggiunta la query «@container» in CSS, che consente di formare lo stile degli elementi in base alle dimensioni dell'elemento genitore. «@container» ricorda le query «@media», ma si applica non in base alle dimensioni dell'intera area visibile, ma in base alle dimensioni del blocco (contenitore) in cui è collocato l'elemento, permettendo di definire una logica di selezione dello stile per gli elementi figli, indipendentemente dal luogo in cui è posizionato l'elemento nella pagina.

- Aggiunto il pseudo-classe CSS «:has()» per verificare la presenza di un elemento figlio nel genitore. Ad esempio, «p:has(span)» include gli elementi <p>, all'interno dei quali è presente un elemento <span>.
- È stata aggiunta l'API HTML Sanitizer, che consente di rimuovere dal contenuto gli elementi che influenzano la visualizzazione e l'esecuzione quando si utilizza il metodo setHTML(). Questa API può essere utile per ripulire i dati in arrivo dall'esterno da HTML tag che potrebbero essere utilizzati per effettuare attacchi XSS.
- È stata introdotta la possibilità di utilizzare l'API Streams (ReadableStream) per inviare richieste fetch prima che il corpo della risposta venga caricato, ovvero è possibile iniziare a inviare dati senza attendere la conclusione della generazione della pagina.
- Per le applicazioni web distinte (PWA, Progressive Web App) è stata fornita la possibilità di modificare l'aspetto dell'area del titolo della finestra tramite i componenti Window Controls Overlay, che espandono l'area dello schermo dell'applicazione web a tutta la finestra e consentono di dare all'applicazione web l'aspetto di una comune applicazione desktop. L'applicazione web può gestire il rendering e l'elaborazione degli input in tutta la finestra, ad eccezione del blocco sovrapposto con i pulsanti di controllo della finestra standard (chiudi, riduci a icona, ingrandisci).

- È stata stabilizzata la possibilità di accesso alle Media Source Extensions dai worker dedicati (nel contesto di DedicatedWorker), che possono essere utilizzati, ad esempio, per migliorare le prestazioni della riproduzione multimediale bufferizzata creando un oggetto MediaSource in un worker separato e trasmettendo i risultati del suo lavoro all'HTMLMediaElement nel thread principale.
- Nell'API Client Hints, che viene sviluppata per sostituire l'intestazione User-Agent e consente di fornire selettivamente dati sui parametri specifici del browser e del sistema (versione, piattaforma, ecc.) solo dopo richiesta, server, è stata aggiunta la supporto alla proprietà Sec-CH-Viewport-Heigh, che consente di ottenere informazioni sull'altezza dell'area visibile. È stato modificato il formato di markup per impostare nei tag «meta» i parametri Client Hints per le risorse esterne: Era: <meta name=»accept-ch» value=»sec-ch-dpr=(https://foo.bar https://baz.qux), sec-ch-width=(https://foo.bar)»> È diventato: <meta http-equiv=»delegate-ch» value=»sec-ch-dpr https://foo.bar https://baz.qux; sec-ch-width https://foo.bar»>
- È stata aggiunta la possibilità di creare gestori di eventi globali onbeforeinput (document.documentElement.onbeforeinput), tramite i quali le applicazioni web possono sovrascrivere il comportamento durante la modifica del testo negli elementi <input>, <textarea> e altri elementi con l'attributo «contenteditable» impostato, nella fase precedente alla modifica del contenuto dell'elemento e dell'albero DOM da parte del browser.
- Sono state ampliate le funzionalità dell'API Navigation, che consente alle applicazioni web di intercettare le operazioni di navigazione nella finestra, iniziare transizioni e analizzare la cronologia delle azioni con l'applicazione. Sono stati aggiunti nuovi metodi intercept() per l'intercettazione delle transizioni e scroll() per lo scorrimento verso una posizione specifica.
- È stato aggiunto il metodo statico Response.json(), che consente di formare il corpo della risposta sulla base di dati di tipo JSON.
- Sono stati apportati miglioramenti agli strumenti per gli sviluppatori web. Nel debugger, quando si attiva un punto di interruzione, è ora possibile modificare il frame superiore dello stack delle funzioni senza interrompere la sessione di debug. Nel pannello Recorder, che consente di registrare, riprodurre e analizzare le azioni dell'utente sulla pagina, è stata implementata la supporto per i punti di interruzione, la riproduzione passo dopo passo e la registrazione degli eventi di puntamento del mouse.
Nel pannello di analisi delle prestazioni sono state aggiunte metriche LCP (Largest Contentful Paint) per identificare ritardi nel rendering di elementi di grandi dimensioni (visibili all'utente) nell'area visibile, come immagini, video ed elementi a blocchi. Nel pannello Elements è stata implementata una marcatura dei livelli superiori visualizzati sopra altri contenuti, con un'icona speciale. Per WebAssembly è stata fornita la possibilità di caricare dati di debug nel formato DWARF.
Oltre alle nuove funzionalità e alla correzione di bug, nella nuova versione sono state eliminate 24 vulnerabilità. Molte delle vulnerabilità sono state identificate grazie ai test automatizzati condotti con strumenti come AddressSanitizer, MemorySanitizer, Control Flow Integrity, LibFuzzer e AFL. Non sono state rilevate problematiche critiche che possano bypassare 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à relative all'attuale rilascio, Google ha assegnato 21 premi per un totale di 60500 dollari USA (un premio di $10000, un premio di $9000, un premio di $7500, un premio di $7000, due premi di $5000, quattro premi di $3000, due premi di $2000 e un premio di $1000). L'importo di sette premi resta attualmente da definire.
Fonte: opennet.ru


