Bajas y eliminaciones de API en Chrome 56

Joe Medley
Joe Medley

En casi todas las versiones de Chrome, vemos una cantidad significativa de actualizaciones y mejoras en el producto, su rendimiento y también en las capacidades de la plataforma web. En este artículo, se describen las bajas y las eliminaciones de Chrome 56, que está en versión beta desde el 8 de diciembre. Esta lista está sujeta a cambios en cualquier momento.

Se quitó la compatibilidad con los certificados SHA-1.

El algoritmo de hash criptográfico SHA-1 mostró signos de debilidad hace más de once años y investigaciones recientes apuntan a la posibilidad inminente de ataques que podrían afectar directamente la integridad de la infraestructura de clave pública (PKI) web.

Para proteger a los usuarios de estos ataques, Chrome ya no admite certificados SHA-1 a partir de la versión 56, cuya versión estable se lanzó en enero de 2017. Si visitas un sitio con un certificado de este tipo, se mostrará una advertencia intersticial. Proporcionamos más detalles en el Blog de seguridad de Chrome.

Intent to Remove | Chromestatus Tracker | Chromium Bug

Se quitaron los algoritmos de cifrado ECDSA en modo CBC en TLS

La construcción del modo CBC de TLS es defectuosa, lo que la hace frágil y muy difícil de implementar de forma segura. Aunque los algoritmos de cifrado en modo CBC aún se usan ampliamente con RSA, prácticamente no existen con ECDSA. Otros navegadores aún admiten estos algoritmos de cifrado, por lo que creemos que el riesgo es bajo. Además, pocas organizaciones usan ECDSA en TLS y, por lo general, con una configuración más compleja (algunos clientes más antiguos solo admiten RSA), por lo que esperamos que los sitios de ECDSA tengan un mejor mantenimiento y sean más responsivos en caso de problemas.

TLS 1.2 agregó nuevos algoritmos de cifrado basados en AEAD, lo que evita estos problemas, específicamente AES_128_GCM, AES_256_GCM o CHACHA20_POLY1305. Si bien, por el momento, solo lo exigimos para los sitios basados en ECDSA, se recomienda para todos los administradores. Los algoritmos de cifrado basados en AEAD no solo mejoran la seguridad, sino también el rendimiento. AES-GCM tiene compatibilidad con hardware en CPUs recientes, y ChaCha20-Poly1305 admite implementaciones de software rápidas. Mientras tanto, los algoritmos de cifrado CBC requieren mitigaciones complejas lentas y acceso a PRNG en cada registro saliente. Los algoritmos de cifrado basados en AEAD también son un requisito previo para las optimizaciones de HTTP/2 y False Start.

Intent to Remove | Chromestatus Tracker | Chromium Bug

Quita los gestos del usuario del desplazamiento táctil

Vimos varios ejemplos de anuncios mal escritos o maliciosos que activan la navegación para el desplazamiento táctil en touchstart o en todos los eventos touchend. Si un evento de "rueda" no puede abrir una ventana emergente, el desplazamiento táctil tampoco debería hacerlo. Esto puede interrumpir algunas situaciones, por ejemplo, que el contenido multimedia no se reproduzca cuando se lo toca o que las ventanas emergentes no se abran cuando se las toca. Safari ya no abre ventanas emergentes en silencio en todas estas situaciones.

Intent to Remove | Chromestatus Tracker | Chromium Bug

No permitir todas las recuperaciones de secuencias de comandos con atributos de tipo o idioma no válidos

Actualmente, el escáner de carga previa de Chrome recupera elementos en elementos <scripts>, independientemente del valor del atributo type o language, aunque la secuencia de comandos no se ejecutará cuando se analice. Si damos de baja la recuperación, el escáner de carga previa y el analizador tendrán la misma semántica, y no iniciaremos recuperaciones para secuencias de comandos que no usaremos. El objetivo es guardar datos para los usuarios que navegan a sitios con muchas etiquetas de secuencia de comandos personalizadas que se procesan posteriormente (como type="text/template", por ejemplo).

La API de sendBeacon abarca de forma adecuada el caso de uso de usar secuencias de comandos no válidas para hacer ping a servidores.

Este cambio alinea Chrome con Safari, aunque Firefox aún solicita secuencias de comandos sin importar el tipo o el idioma.

Intent to Remove | Chromestatus Tracker | Chromium Bug

Se quitó MediaStreamTrack.getSources().

Este método ya no forma parte de la especificación y ningún otro navegador importante lo admite. Se reemplazó por MediaDevices.enumerateDevices(), que Blink admite sin marcas desde la versión 47 y que también es compatible con otros navegadores. A continuación, se muestra un ejemplo de esto. Esta función hipotética getCameras() primero usa la detección de componentes para encontrar y usar enumerateDevices(). Si la detección de componentes falla, busca getSources() en MediaStreamTrack. Por último, si no hay compatibilidad con la API de ningún tipo, muestra el array cameras vacío.

    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 to Remove | Chromestatus Tracker | Chromium Bug

Se quitó la directiva CSP reflected-xss.

Los primeros borradores de la especificación del nivel 2 de la política de seguridad del contenido contenían una directiva reflected-xss que no ofrecía nada más que el encabezado X-XSS-Protection, además de una sintaxis diferente. Esta directiva se quitó de la especificación en 2015, pero no antes de implementarse en Chrome. Se quitará la compatibilidad con esta directiva.

Intent to Remove | Chromestatus Tracker | Chromium Bug

Reemplaza la directiva "referrer" de la CSP

La directiva referrer de CSP permitía a los propietarios de sitios establecer una política de URL de referencia desde un encabezado HTTP. Esta función no solo tiene un uso muy bajo, sino que ya no forma parte de ninguna especificación del W3C.

Los sitios que aún necesiten esta funcionalidad deben usar <meta name="referrer"> o el nuevo encabezado Referrer-Policy.

Intent to Remove | Chromestatus Tracker | Chromium Bug

Se quitó el campo PaymentAddress.careOf.

La interfaz PaymentAddress tiene un campo careOf que no es estándar (no es compatible con ningún estándar de dirección conocido). El campo careOf tampoco es necesario, ya que los campos de destinatario y organización admiten todos los casos de uso necesarios. La adición de careOf plantea problemas significativos en términos de interoperabilidad con los esquemas y las APIs de direcciones postales existentes. Para obtener una discusión más completa, lee la propuesta de eliminación de especificaciones en GitHub.

Intent to Remove | Error de Chromium

Se quitó SVGViewElement.viewTarget

El atributo SVGViewElement.viewTarget no forma parte de la especificación SVG2.0 y su uso es pequeño o inexistente. Este atributo dejó de estar disponible en Chrome 54 y ahora se quitó.

Intent to Remove | Chromestatus Tracker | Chromium Bug