Rimozioni e ritiri delle API in Chrome 56

Joe Medley
Mario Bianchi

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 i ritiri e le rimozioni in Chrome 56, in versione beta a partire dall'8 dicembre. Questo elenco è soggetto a modifiche in qualsiasi momento.

Rimozione del supporto per i certificati SHA-1

L'algoritmo di hash crittografico SHA-1 ha mostrato per la prima volta segni di debolezza oltre undici anni fa e alcune ricerche recenti indicano l'imminente possibilità di attacchi che potrebbero influire direttamente sull'integrità dell'infrastruttura a chiave pubblica web (PKI).

Per proteggere gli utenti da questi attacchi, Chrome non supporta più i certificati SHA-1 a partire da Chrome 56, la cui release stabile è prevista per gennaio 2017. Quando visiti un sito che utilizza un certificato di questo tipo, viene visualizzato un avviso interstitial. Ulteriori dettagli sono disponibili sul Blog sulla sicurezza di Chrome.

Intent di rimozione | Tracker di stato di Chrome | Bug di Chromium

Rimuovi le crittografie ECDSA in modalità CBC in TLS

La struttura di TLS in modalità CBC è difettosa e la rende fragile e molto difficile da implementare in modo sicuro. Sebbene le crittografie in modalità CBC siano ancora ampiamente utilizzate con gli RSA, sono praticamente inesistenti con l'ECDSA. Riteniamo che il rischio sia ridotto perché altri browser supportano ancora queste crittografie. Inoltre, l'ECDSA in TLS è utilizzato da poche organizzazioni e di solito con una configurazione più complessa (alcuni client meno recenti supportano solo gli RSA), pertanto prevediamo che i siti ECDSA siano gestiti meglio e più reattivi in caso di problemi.

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

Intent di rimozione | Tracker di stato di Chrome | Bug di Chromium

Rimuovi i gesti dell'utente dallo scorrimento al tocco

Abbiamo visto diversi esempi di annunci dannosi o scritti male che attivano la navigazione per scorrimento al tocco su touchstart o in tutti gli eventi touchend. Se un evento "wheel" non può aprire un popup, non dovrebbe nemmeno toccare lo scorrimento. Ciò potrebbe interrompere alcuni scenari, ad esempio contenuti multimediali non riprodotti al tocco o popup che non si aprono con il tocco. Safari non riesce già ad aprire i popup in tutti questi scenari.

Intent di rimozione | Tracker di stato di Chrome | Bug di Chromium

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

Attualmente, 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 viene eseguito durante l'analisi. Ritirando il recupero, lo scanner di precaricamento e l'analizzatore sintattico avranno la stessa semantica e non avvieremo recuperi per script che non utilizzeremo. Questo consente di salvare i dati degli utenti che visitano siti con molti tag di script personalizzati in fase di elaborazione (come type="text/template", ad esempio).

Il caso d'uso di script non validi per eseguire il ping dei server è adeguatamente coperto dall'API sendBeacon.

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

Intent di rimozione | Tracker di stato di Chrome | Bug di Chromium

Rimuovi MediaStreamTrack.getSources()

Questo metodo non fa più parte della specifica e non è supportato da altri browser principali. È stato sostituito da MediaDevices.enumerateDevices(), che Blink supporta senza flag dalla versione 47 e che è supportato anche da altri browser. Di seguito è riportato un esempio. Questa funzione getCameras() ipotetica utilizza prima il rilevamento delle funzionalità per trovare e utilizzare enumerateDevices(). Se il rilevamento della funzionalità non riesce, cerca getSources() in MediaStreamTrack. Infine, se non è disponibile alcun supporto API di alcun tipo, restituisci 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);
      }
    };

Intent di rimozione | Tracker di stato di Chrome | Bug di Chromium

Rimuovi istruzione CSP rifless-xss

Le prime bozze della specifica Content Security Policy Level 2 contenevano un'istruzione reflected-xss che offriva nient'altro che l'intestazione X-XSS-Protection, a parte una sintassi diversa. Questa istruzione è stata rimossa dalle specifiche nel 2015, ma non prima di essere implementata in Chrome. Il supporto per questa istruzione è stato rimosso.

Intent di rimozione | Tracker di stato di Chrome | Bug di Chromium

Sostituisci l'istruzione "referrer" del CSP

L'istruzione CSP referrer ha consentito ai proprietari dei siti di impostare un criterio relativo ai referrer da un'intestazione HTTP. Questa funzionalità non solo è utilizzata molto poco, ma non fa più parte di nessuna specifica W3C.

I siti che necessitano ancora di questa funzionalità devono utilizzare <meta name="referrer"> o la nuova intestazione referrer-Policy.

Intent di rimozione | Tracker di stato di Chrome | Bug di Chromium

Rimuovi il campo PaymentAddress.careOf

L'interfaccia PaymentAddress contiene un campo careOf che non è standard (non è supportato da standard di indirizzi noti). Inoltre, 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 di indirizzi postali e le API esistenti. Per una discussione più completa, leggi la proposta di rimozione delle specifiche su GitHub.

Intent di rimozione | Bug di Chromium

Rimuovi SVGViewElement.viewTarget

L'attributo SVGViewElement.viewTarget non fa parte della specifica SVG2.0 e il suo utilizzo è limitato o inesistente. Questo attributo era stato ritirato in Chrome 54 ed è stato rimosso.

Intent di rimozione | Tracker di stato di Chrome | Bug di Chromium