Rimozioni e ritiri delle API in Chrome 56

Joe Medley
Joe Medley

In quasi tutte le versioni di Chrome, notiamo un numero significativo di aggiornamenti e miglioramenti al prodotto, alle sue prestazioni e anche alle funzionalità della piattaforma web. Questo articolo descrive le ritirazioni e le rimozioni in Chrome 56, che è in versione beta dall'8 dicembre. Questo elenco è soggetto a modifiche in qualsiasi momento.

Rimuovere il supporto per i certificati SHA-1

L'algoritmo di hashing criptato SHA-1 ha mostrato per la prima volta segni di debolezza oltre undici anni fa e ricerche recenti indicano la possibilità imminente di attacchi che potrebbero avere un impatto diretto sulla integrità della PKI (Public Key Infrastructure) web.

Per proteggere gli utenti da questi attacchi, Chrome non supporta più i certificati SHA-1 a partire da Chrome 56, la cui release stabile è stata rilasciata a gennaio 2017. La visita a un sito che utilizza un certificato di questo tipo comporta un avviso popup. Forniamo maggiori dettagli sul blog di sicurezza di Chrome.

Intento di rimozione | Tracker di Chromestatus | Bug di Chromium

Rimuovi le crittografie ECDSA in modalità CBC in TLS

La modalità CBC di TLS è imperfetta, il che la rende fragile e molto difficile da implementare in modo sicuro. Sebbene le crittografie in modalità CBC siano ancora ampiamente utilizzate con RSA, sono praticamente inesistenti con ECDSA. Poiché altri browser supportano ancora questi metodi di crittografia, riteniamo che il rischio sia basso. Inoltre, l'ECDSA in TLS è utilizzato da poche organizzazioni e di solito ha una configurazione più complessa (alcuni client meno recenti supportano solo gli RSA), quindi ci aspettiamo che i siti ECDSA siano gestiti meglio e più reattivi in caso di problemi.

TLS 1.2 ha aggiunto nuove crittografie basate sugli AEAD per evitare questi problemi, in particolare AES_128_GCM, AES_256_GCM o CHACHA20_POLY1305. Anche se al momento lo richiediamo solo per i siti basati su ECDSA, è consigliato per tutti gli amministratori. I cifrari basati su AEAD non solo migliorano la sicurezza, ma anche le prestazioni. AES-GCM supporta hardware su CPU recenti e ChaCha20-Poly1305 ammette implementazioni software rapide. Invece, le crittografie CBC richiedono mitigazioni complesse e lente e l'accesso a PRNG su ogni record in uscita. Le crittografie basate su AEAD sono anche un prerequisito per le ottimizzazioni di HTTP/2 e False Start.

Intento di rimozione | Tracker di Chromestatus | Bug di Chromium

Rimuovere i gesti dell'utente dallo scorrimento tocco

Abbiamo visto diversi esempi di annunci scritti male o danni che attivano la navigazione per gli scorrimenti al tocco su touchstart o in tutti gli eventi touchend. Se un evento "rotella" non riesce ad aprire un popup, nemmeno lo scorrimento tocco dovrebbe farlo. Ciò potrebbe causare la rottura di alcuni scenari, ad esempio la mancata riproduzione dei contenuti multimediali con il tocco o l'apertura dei popup con il tocco. Safari non riesce già a aprire i popup in silenzio in tutti questi scenari.

Intento di rimozione | Tracker di Chromestatus | Bug di Chromium

Non consentire tutti i recuperi per script con attributi di tipo/lingua non validi

Al momento, lo scanner di precaricamento di Chrome recupera gli elementi negli elementi <scripts> indipendentemente dal valore dell'attributo type o language, anche se lo script non verrà eseguito durante l'analisi. Con il ritiro del recupero, lo scanner di precaricamento e lo scanner avranno la stessa semantica e non avvieremo recuperi per gli script che non utilizzeremo. Lo scopo è salvare i dati degli utenti che visitano siti con molti tag script personalizzati sottoposti a post-elaborazione (ad esempiotype="text/template").

Il caso d'uso di utilizzo di script non validi per il ping dei server è adeguatamente coperto dall'APIsendBeacon.

Questa modifica allinea Chrome a Safari, anche se Firefox richiede ancora script indipendentemente dal tipo o dalla lingua.

Intento di rimozione | Tracker di Chromestatus | Bug di Chromium

Rimuovi MediaStreamTrack.getSources()

Questo metodo non fa più parte della specifica e non è supportato da nessun altro browser principale. È stato sostituito da MediaDevices.enumerateDevices(), supportato da Blink senza flag dalla versione 47, e supportato anche da altri browser. Di seguito è riportato un esempio. Questa funzione getCameras() ipotetica utilizza innanzitutto il rilevamento di funzionalità per trovare e utilizzare enumerateDevices(). Se il rilevamento delle funzionalità non va a buon fine, viene cercata getSources() in MediaStreamTrack. Infine, se non è presente alcun supporto per l'API, restituisce l'array cameras vuoto.

    function getCameras(camerasCallback) {
      var cameras = [];
      if('enumerateDevices' in navigator.mediaDevices) {
         navigator.mediaDevices.enumerateDevices()
          .then(function(sources) {
            return sources.filter(function(source) { 
              return source.kind == 'videoinput' 
            });
          })
          .then(function(sources) {
            sources.forEach(function(source) {
              if(source.label.indexOf('facing back') >= 0) {
                // move front facing to the front.
                cameras.unshift(source);
              }
              else {
                cameras.push(source);
              }
            });
            camerasCallback(cameras);
          });
      }
      else if('getSources' in MediaStreamTrack) {
        MediaStreamTrack.getSources(function(sources) {

          for(var i = 0; i < sources.length; i++) {
            var source = sources[i];
            if(source.kind === 'video') {

              if(source.facing === 'environment') {
                // cameras facing the environment are pushed to the front of the page
                cameras.unshift(source);
              }
              else {
                cameras.push(source);
              }
            }
          }
          camerasCallback(cameras);
        });
      }
      else {
        // We can't pick the correct camera because the API doesn't support it.
        camerasCallback(cameras);
      }
    };

Intento di rimozione | Tracker di Chromestatus | Bug di Chromium

Rimuovi la direttiva CSP riflessa xss

Le prime bozze delle specifiche del livello 2 dei criteri Content Security Policy contenevano una direttiva reflected-xss che non offriva altro che l'intestazione X-XSS-Protection, a parte una sintassi diversa. Questa direttiva è stata rimossa dalla specifica nel 2015, ma non prima di essere implementata in Chrome. Il supporto per questa istruzione verrà rimosso.

Intento di rimozione | Tracker di Chromestatus | Bug di Chromium

Sostituire l'istruzione "referrer" del CSP

La direttiva CSP referrer consentiva ai proprietari di siti di impostare un criterio relativo al referrer da un'intestazione HTTP. Non solo questa funzionalità ha un utilizzo molto ridotto, ma non fa più parte di nessuna specifica W3C.

I siti che richiedono ancora questa funzionalità dovrebbero usare <meta name="referrer"> o la nuova intestazione referrer-Policy.

Intento di rimozione | Tracker dello stato di Chrome | Bug di Chromium

Rimuovi il campo PaymentAddress.careOf

L'interfaccia PaymentAddress ha un campo careOf non standard (nessuno standard di indirizzi ben noti lo supporta). Anche il campo careOf è non necessario, i campi Destinatario e Organizzazione supportano sufficientemente tutti i casi d'uso necessari. L'aggiunta di careOf pone problemi significativi in termini di interoperabilità con gli schemi e le API degli indirizzi postali esistenti. Per una discussione più completa, leggi la proposta di rimozione delle specifiche su GitHub.

Intento di rimozione | Brug di Chromium

Rimuovi SVGViewElement.viewTarget

L'attributo SVGViewElement.viewTarget non fa parte della specifica SVG 2.0 e il suo utilizzo è ridotto o inesistente. Questo attributo è stato ritirato in Chrome 54 e ora è stato rimosso.

Intento di rimozione | Tracker di Chromestatus | Bug di Chromium