Google ha presentato il rilascio del browser web Chrome 104. È disponibile contemporaneamente una versione stabile del progetto open-source Chromium, che funge da base per Chrome. Il browser Chrome si distingue da Chromium per l'uso dei loghi Google, la presenza di un sistema di invio notifiche in caso di crash, moduli per la riproduzione di contenuti video protetti da copyright (DRM), un sistema di aggiornamento automatico, l'attivazione permanente dell'isolamento Sandbox, la fornitura di chiavi per le API di Google e la trasmissione di parametri RLZ durante la ricerca. Per coloro che hanno bisogno di più tempo per aggiornare, è mantenuta una versione Extended Stable, che viene supportata per 8 settimane. Il prossimo rilascio di Chrome 105 è programmato per il 30 agosto.
Principali novità in Chrome 104:
- Introdotto un limite di durata per i Cookie: tutti i nuovi o aggiornati Cookie verranno automaticamente rimossi dopo 400 giorni di esistenza, anche se il tempo di scadenza indicato tramite gli attributi Expires e Max-Age supera i 400 giorni (per tali Cookie, la durata sarà ridotta a 400 giorni). I Cookie creati prima dell'introduzione del limite manterranno il loro tempo di vita, anche se supera i 400 giorni, ma saranno limitati in caso di aggiornamento. Questa modifica riflette i nuovi requisiti evidenziati nella bozza della nuova specifica.
- Attivata la blocco delle richieste da iframe a URL che fanno riferimento al file system locale ("filesystem://").
- Per accelerare il caricamento della pagina è stata aggiunta una nuova ottimizzazione che consente di stabilire una connessione con l'host di destinazione al momento del clic sul link, senza aspettare il rilascio del pulsante o la rimozione del dito dallo schermo touchscreen.
- Sono state aggiunte impostazioni per gestire l'API "Topics & Interest Group", promossa nell'ambito dell'iniziativa Privacy Sandbox e che consente di definire le categorie di interesse dell'utente e utilizzarle al posto dei Cookie di tracciamento per raggruppare gli utenti con interessi simili senza identificare singoli utenti. Inoltre, sono stati introdotti dialoghi informativi mostrati una sola volta, che spiegano all'utente la natura della tecnologia e offrono di attivare il suo supporto nelle impostazioni.
- I valori soglia per limitare le chiamate annidate dei timer setTimeout e setInterval, avviati con un intervallo inferiore a 4 ms («setTimeout(…, <4ms)»), sono stati aumentati. Il limite totale per tali chiamate è stato incrementato da 5 a 100, permettendo di non ridurre aggressivamente le singole chiamate, pur evitando abusi che potrebbero influenzare le prestazioni del browser.
- È stata attivata l'invio al server del sito principale della richiesta di conferma delle autorizzazioni CORS (Cross-Origin Resource Sharing) con l'intestazione «Access-Control-Request-Private-Network: true», nel caso di richiesta da una pagina a una sottorisorsa in una rete interna (192.168.x.x, 10.x.x.x, 172.16-31.x.x) o a localhost (127.x.x.x). Quando l'operazione è confermata, il server deve restituire l'intestazione «Access-Control-Allow-Private-Network: true». Nella versione Chrome 104, il risultato della conferma non influisce ancora sull'elaborazione della richiesta: in assenza di conferma, viene visualizzato un avviso nella console web, ma la richiesta della sottorisorsa non viene bloccata. L'attivazione del blocco in assenza di conferma server è attesa non prima della versione Chrome 107. Per attivare il blocco in versioni precedenti, è possibile attivare l'impostazione «chrome://flags/#private-network-access-respect-preflight-results».
Conferma delle autorizzazioni server introdotto per migliorare la protezione contro attacchi legati all'accesso alle risorse nella rete locale o sul computer dell'utente (localhost) da script caricati durante l'apertura del sito. Tali richieste vengono utilizzate da malintenzionati per effettuare attacchi CSRF a router, punti di accesso, stampanti, interfacce web aziendali e altri dispositivi e servizi che accettano richieste solo dalla rete locale. Per proteggere da tali attacchi, nel caso di accesso a qualsiasi sottorisorsa nella rete interna, il browser invierà una richiesta esplicita di autorizzazione al caricamento di queste sottorisorse.
- È stato aggiunto un meccanismo chiamato Region Capture, che consente di ritagliare contenuti indesiderati dai video generati tramite la cattura dello schermo. Ad esempio, utilizzando l'API getDisplayMedia, un'app web può trasmettere un video del contenuto di una scheda, mentre Region Capture permette di rimuovere parti del contenuto, inclusi gli elementi di controllo delle videoconferenze.
- È stato introdotto il supporto per una nuova sintassi di media query definita nella specifica Media Queries Level 4, che definisce la dimensione minima e massima dell'area visibile (viewport). La nuova sintassi consente di utilizzare normali operatori matematici di confronto e operatori logici come «not», «or» e «and». Ad esempio, invece di «@media (min-width: 400px) { … }», ora si può specificare «@media (width >= 400px) { … }».
- Nella modalità Origin Trials (funzionalità sperimentali che richiedono un'attivazione separata) sono stati aggiunti diversi nuovi API. L'Origin Trial implica la possibilità di utilizzare l'API specificata da applicazioni caricate da localhost o 127.0.0.1, o dopo aver completato la registrazione e ottenuto un token speciale, valido per un tempo limitato per un sito web specifico.
- È stata aggiunta la proprietà CSS «focusgroup» per migliorare la navigazione degli elementi utilizzando i tasti direzionali sulla tastiera.
- Nell'API Secure Payment Confirmation è stata fornita la possibilità per l'utente di disattivare l'archiviazione delle informazioni sulle carte di credito. Per visualizzare una finestra di dialogo che consenta di rinunciare al salvataggio delle informazioni sulle carte di credito, nel costruttore PaymentRequest() è previsto il flag «showOptOut: true».
- È stata aggiunta l'API Shared Element Transitions, che consente di organizzare una transizione fluida tra diverse visualizzazioni del contenuto nelle applicazioni web a pagina singola.
- È stata stabilizzata la supporto per le regole speculative (Speculation rules), che consentono agli autori dei siti di trasmettere al browser informazioni sulle pagine più probabili a cui l'utente potrebbe accedere. Il browser utilizza queste informazioni per il caricamento e il rendering proattivi dei contenuti delle pagine.
- È stato stabilizzato il meccanismo di impacchettamento delle sotto-risorse in pacchetti nel formato Web Bundle, che consente di aumentare l'efficienza del caricamento di un gran numero di file accessori (stili CSS, JavaScript, immagini, iframe). A differenza dei pacchetti nel formato Webpack, il formato Web Bundle presenta i seguenti vantaggi: è il pacchetto che si deposita nella cache HTTP, non il pacchetto stesso, ma le sue parti; la compilazione e l'esecuzione del JavaScript inizia senza attendere il caricamento completo del pacchetto; è possibile includere risorse aggiuntive, come CSS e immagini, che in webpack dovevano essere codificate sotto forma di stringhe JavaScript.
- È stata aggiunta la proprietà CSS object-view-box, che consente di determinare la parte dell'immagine che verrà visualizzata nell'area invece dell'elemento specificato, il che può essere utilizzato, ad esempio, per aggiungere un bordo o un'ombra.
- È stata aggiunta l'API Fullscreen Capability Delegation, che consente a un oggetto Window di trasferire a un altro oggetto Window il diritto di invocare requestFullscreen().
- È stata aggiunta l'API Fullscreen Companion Window, che consente di visualizzare contenuti a schermo intero e finestre pop-up su un altro schermo dopo aver ottenuto conferma dall'utente.
- Nella proprietà CSS overflow-clip-margin è stato aggiunto l'attributo visual-box, che determina da dove deve iniziare il ritaglio dei contenuti che escono dai limiti dell'area (può assumere i valori content-box, padding-box e border-box).
- Nell'API Async Clipboard è stata aggiunta la possibilità di definire formati specializzati per i dati trasmessi tramite il clipboard che differiscono da testo, immagini e testo con markup.
- In WebGL è supportata l'indicazione dello spazio colore per il buffer di rendering e la conversione durante l'importazione da una texture.
- Il supporto per le piattaforme OS X 10.11 e macOS 10.12 è stato interrotto.
- Il supporto per l'API U2F (Cryptotoken), precedentemente dichiarata obsoleta e disattivata per impostazione predefinita, è stato interrotto. L'API Web Authentication ha preso il posto dell'API U2F.
- Sono stati apportati miglioramenti agli strumenti per gli sviluppatori web. Nel debugger è stata aggiunta la funzionalità di riavvio del codice dall'inizio della funzione, dopo il verificarsi di un breakpoint in un qualsiasi punto del corpo della funzione. È stato aggiunto il supporto per lo sviluppo di estensioni per il pannello del Registratore. Nel pannello per l'analisi delle prestazioni è stato aggiunto il supporto per la visualizzazione delle etichette impostate nell'app web tramite la chiamata al metodo performance.measure(). Sono stati migliorati i suggerimenti per il completamento automatico delle proprietà degli oggetti JavaScript. Per il completamento automatico delle variabili CSS è stata fornita un'anteprima dei valori non collegati ai colori.

Oltre alle novità e alla correzione di bug, nella nuova versione sono state risolte 27 vulnerabilità. Molte delle vulnerabilità sono state identificate utilizzando strumenti di test automatizzati come AddressSanitizer, MemorySanitizer, Control Flow Integrity, LibFuzzer e AFL. Non sono state trovate problematiche critiche che consentano di superare tutti i livelli di protezione del browser ed eseguire codice nel sistema al di fuori dell'ambiente sandbox. Nell'ambito del programma di premi per la scoperta di vulnerabilità, per l'attuale rilascio, Google ha erogato 22 premi per un totale di 84.000 dollari (un premio di $15.000, un premio di $10.000, un premio di $8.000, un premio di $7.000, quattro premi di $5.000, un premio di $4.000, tre premi di $3.000, quattro premi di $2.000 e tre premi di $1.000). L'importo di un premio non è ancora stato stabilito.
Fonte: opennet.ru

