Bajas y eliminaciones de API en Chrome 56

Joe Medley
Jo Medley

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

Quitar la compatibilidad con los certificados SHA-1

El algoritmo de hash criptográfico SHA-1 mostró por primera vez indicios de debilidad hace más de once años y, en investigaciones recientes, se señala 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 esos ataques, Chrome ya no admite certificados SHA-1 a partir de Chrome 56, cuya versión estable se realizará en enero de 2017. Si visitas un sitio con un certificado de este tipo, se mostrará una advertencia intersticial. Puedes encontrar más detalles en el blog de seguridad de Chrome.

Intent de quitar | Seguimiento de Chromestatus | Error de Chromium

Quita los algoritmos de cifrado ECDSA en modo CBC en TLS

La construcción de TLS en modo CBC 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 todavía se usan ampliamente con los RSA, prácticamente no existen con ECDSA. Otros navegadores aún admiten estos cifrados, 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 se mantengan mejor 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. Aunque por el momento solo es obligatorio para los sitios basados en ECDSA, se recomienda a todos los administradores. Los algoritmos de cifrado basados en AEAD no solo mejoran la seguridad, sino también el rendimiento. AES-GCM tiene compatibilidad de hardware con CPU recientes y ChaCha20-Poly1305 admite implementaciones de software rápidas. Mientras tanto, los cifrados de 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 para las optimizaciones de HTTP/2 y de inicio falso.

Intent de quitar | Seguimiento de Chromestatus | Error de Chromium

Quitar gestos del usuario del desplazamiento táctil

Observamos varios ejemplos de anuncios maliciosos o mal escritos que activan la navegación para desplazamientos táctiles 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 generar fallas en algunos casos, como cuando el contenido multimedia no se reproduce al tacto o las ventanas emergentes que no se abren al tacto. Safari ya no abre ventanas emergentes en silencio en ninguna de estas situaciones.

Intent de quitar | Seguimiento de Chromestatus | Error de Chromium

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

Actualmente, el analizador de precarga de Chrome recupera elementos en elementos <scripts>, sin importar el valor del atributo type o language, aunque la secuencia de comandos no se ejecutará cuando se analice. Si se da de baja la recuperación, el analizador de precarga y el analizador tendrán la misma semántica y no iniciaremos recuperaciones de secuencias de comandos que no usaremos. Esto permite ahorrar datos de los usuarios que navegan a sitios con muchas etiquetas de secuencia de comandos personalizadas que se procesan con posterioridad (como type="text/template").

El caso práctico de usar secuencias de comandos no válidas para hacer ping a los servidores se cubre de forma adecuada en la API de sendBeacon.

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

Intent de quitar | Seguimiento de Chromestatus | Error de Chromium

Se quitó MediaStreamTrack.getSources()

Este método ya no forma parte de la especificación y no es compatible con ningún otro navegador importante. Se reemplazó por MediaDevices.enumerateDevices(), que Blink admite sin marcas desde la versión 47 y también es compatible con otros navegadores. A continuación, se muestra un ejemplo. Esta función hipotética getCameras() primero usa la detección de funciones para encontrar y usar enumerateDevices(). Si falla la detección de características, busca getSources() en MediaStreamTrack. Por último, si no hay compatibilidad de 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 de quitar | Seguimiento de Chromestatus | Error de Chromium

Quita la directiva de CSP reflejará-xss

Los primeros borradores de la especificación de la Política de Seguridad del Contenido de nivel 2 contenían una directiva reflected-xss que ofrecía solo el encabezado X-XSS-Protection, a excepción de una sintaxis diferente. Esta directiva se quitó de la especificación en 2015, pero no antes de su implementación en Chrome. Se quitará la compatibilidad con esta directiva.

Intent de quitar | Seguimiento de Chromestatus | Error de Chromium

Reemplazar la directiva “referrer” de la CSP

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

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

Intent de quitar | Seguimiento de Chromestatus | Error de Chromium

Quita el campo PaymentAddress.careOf

La interfaz PaymentAddress tiene un campo careOf que no es estándar (ningún estándar de dirección conocido lo admite). El campo careOf tampoco es necesario, ya que los campos de destinatario y organización admiten de manera suficiente todos los casos de uso necesarios. Agregar careOf genera problemas importantes en términos de interoperabilidad con las APIs y los esquemas de direcciones postales existentes. Para ver un análisis más completo, consulta la propuesta de eliminación de especificaciones en GitHub.

Intención de quitar | Error de Chromium

Quita SVGViewElement.viewTarget

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

Intent de quitar | Seguimiento de Chromestatus | Error de Chromium