La empresa Google ha lanzado la versión del navegador web Chrome 101. Al mismo tiempo, está disponible la versión estable del proyecto de código abierto Chromium, que sirve como base para Chrome. El navegador Chrome se diferencia de Chromium por el uso de los logotipos de Google, la existencia de un sistema de envío de notificaciones en caso de fallos, módulos para la reproducción de contenido de video protegido contra copia (DRM), un sistema de actualización automática, el uso constante de aislamiento Sandbox, la entrega de claves para Google API y el envío de parámetros RLZ durante las búsquedas. Para aquellos que necesitan más tiempo para actualizar, se mantiene una rama de Extended Stable, que ofrece soporte durante 8 semanas con una actualización para la versión anterior de Chrome 100. La próxima versión de Chrome 102 está programada para el 24 de mayo.
Principales cambios en Chrome 101:
- Se ha añadido la función Side Search, que permite ver los resultados de búsqueda en un panel lateral mientras se visualiza otra página (en una ventana se puede ver tanto el contenido de la página como el resultado de la búsqueda). Después de navegar a un sitio desde la página de resultados de búsqueda de Google, aparece un ícono con la letra «G» antes del campo de entrada en la barra de direcciones, al hacer clic en el cual se abre el panel lateral con los resultados de la búsqueda anterior. Por defecto, esta función no está habilitada en todos los sistemas, se puede activar utilizando la configuración «chrome://flags/#side-search».

- En la barra de direcciones Omnibox se ha implementado la pre-renderización (prerendering) del contenido de las recomendaciones, que se ofrecen a medida que se introduce texto. Anteriormente, para acelerar la navegación desde la barra de direcciones, las recomendaciones más probables se cargaban antes de que el usuario hiciera clic, utilizando la llamada Prefetch. Ahora, además de cargarse, también se pre-renderizan en el búfer (incluyendo la ejecución de scripts y la formación del árbol DOM), lo que permite mostrar instantáneamente las recomendaciones después de hacer clic. Para gestionar la pre-renderización se han propuesto las configuraciones «chrome://flags/#enable-prerender2», «chrome://flags/#omnibox-trigger-for-prerender2» y «chrome://flags/#search-suggestion-for-prerender2».
- La información se ha recortado en el encabezado HTTP User-Agent y en los parámetros de JavaScript navigator.userAgent, navigator.appVersion y navigator.platform. En el encabezado se mantienen solo los datos sobre el nombre del navegador, la versión principal del navegador (los componentes de la versión MINOR.BUILD.PATCH se reemplazan por 0.0.0), la plataforma y el tipo de dispositivo (teléfono móvil, PC, tableta). Para obtener datos adicionales, como la versión exacta y datos avanzados sobre la plataforma, es necesario utilizar la API User Agent Client Hints. Para los sitios que no dispongan de esta nueva información y que aún no estén listos para cambiar a User Agent Client Hints, se ha proporcionado la opción de devolver el User-Agent completo hasta mayo de 2023.
- Se ha cambiado el comportamiento de la función setTimeout al pasar un argumento cero que determina el retraso de la llamada. A partir de Chrome 101, al usar "setTimeout(…, 0)" el código se ejecutará de inmediato, sin el retraso de 1 ms que la especificación requiere. Para llamadas anidadas repetidas a setTimeout, se aplica un retraso de 4 ms.
- En la versión para la plataforma Android, se ha implementado el soporte para solicitar permisos para mostrar notificaciones (en Android 13, para mostrar notificaciones, la aplicación debe tener el permiso "POST_NOTIFICATIONS", sin el cual el envío de notificaciones estará bloqueado). Al iniciar Chrome en un entorno Android 13, el navegador ahora mostrará la solicitud para obtener permisos para mostrar notificaciones.
- Se ha eliminado la posibilidad de utilizar la API WebSQL en scripts de terceros. Por defecto, la restricción de WebSQL en scripts que no se cargan desde el sitio actual estuvo habilitada en Chrome 97, pero se dejó la opción de desactivar este comportamiento. En Chrome 101, esta opción ha sido eliminada. Se planea eventualmente descontinuar completamente el soporte para WebSQL, independientemente del contexto de uso. Se recomienda utilizar la API Web Storage y la Base de Datos Indexada en lugar de WebSQL. El controlador de WebSQL se basa en el código de SQLite y podría haber sido utilizado por atacantes para explotar vulnerabilidades en SQLite.
- Se han eliminado los nombres de políticas para empresas (chrome://policy) que contienen términos no inclusivos. A partir de Chrome 86, se han propuesto reemplazos para dichas políticas, utilizando terminología inclusiva. Se han limpiado términos como "whitelist", "blacklist", "native" y "master". Por ejemplo, la política URLBlacklist ha sido renombrada a URLBlocklist, AutoplayWhitelist a AutoplayAllowlist, y NativePrinters a Printers.
- En el modo Origin Trials (características experimentales que requieren una activación específica), ha comenzado la prueba de la API Federated Credential Management (FedCM) solo en versiones para la plataforma Android. Esta API permite crear servicios de identificación combinados que garantizan la privacidad y funcionan sin mecanismos de seguimiento entre sitios, como el procesamiento de cookies de terceros. Origin Trial permite trabajar con esta API desde aplicaciones cargadas desde localhost o 127.0.0.1, o después de registrarse y obtener un token especial que es válido por un tiempo limitado para un sitio web específico.
- Se ha estabilizado y puesto a disposición de todos el mecanismo Priority Hints, que permite establecer la importancia de un recurso descargado mediante la especificación del atributo adicional "importance" en etiquetas como iframe, img y link. Este atributo puede tener valores "auto", "low" y "high", los cuales influyen en el orden de carga de los recursos externos por parte del navegador.
- Se ha añadido la propiedad AudioContext.outputLatency, a través de la cual se puede obtener información sobre la latencia pronosticada antes de la salida de sonido (la latencia entre la solicitud de sonido y el comienzo del procesamiento de los datos recibidos por el dispositivo de salida de sonido).
- Se ha añadido la propiedad CSS font-palette y la regla @font-palette-values, que permiten seleccionar una paleta de un tipo de letra de color o definir una paleta propia. Por ejemplo, estas funciones pueden utilizarse para ajustar los colores de las fuentes de caracteres coloridos o emoji al color del contenido o para habilitar el modo oscuro o claro para la fuente.
- Se ha añadido la función CSS hwb(), que proporciona un método alternativo para especificar colores sRGB en formato HWB (Hue, Whiteness, Blackness), similar al formato HSL (Hue, Saturation, Lightness), pero más fácil de comprender para los humanos.
- En el método window.open(), la especificación de la propiedad popup en la cadena windowFeatures, sin asignarle un valor (es decir, cuando se indica popup sin que aparezca popup=true), ahora se interpreta como la activación de un pequeño popup (equivalente a "popup=true"), en lugar de asignar por defecto el valor "false", lo cual era ilógico y confundía a los desarrolladores.
- En la API MediaCapabilities, que proporciona información sobre las capacidades del dispositivo y del navegador para decodificar contenido multimedia (codecs soportados, perfiles, bitrates y resoluciones), se agregó soporte para flujos WebRTC.
- Se propuso la tercera versión de la API Secure Payment Confirmation, que proporciona herramientas para la confirmación adicional de las operaciones de pago. En la nueva versión se agregó soporte para identificadores que requieren la entrada de datos, la definición de un ícono para indicar un error de verificación, así como una propiedad opcional payeeName.
- En la API USBDevice se añadió el método forget() para revocar permisos anteriormente otorgados por el usuario para acceder a un dispositivo USB. Además, las instancias de USBConfiguration, USBInterface, USBAlternateInterface y USBEndpoint ahora son iguales en comparación estricta (‘===’, indican el mismo objeto) si se devuelven para el mismo objeto USBDevice.
- Se realizaron mejoras en las herramientas para desarrolladores web. Se proporcionó la posibilidad de importar y exportar en formato JSON las acciones del usuario registradas (ejemplo). En la consola web y en la interfaz de inspección de código se mejoró el cálculo y la visualización de propiedades privadas. Se agregó soporte para trabajar con el modelo de color HWB. En el panel CSS se agregó la opción para ver las capas en cascada definidas mediante la regla @layer.

Además de las novedades y correcciones de errores, en la nueva versión se solucionaron 30 vulnerabilidades. Muchas de las vulnerabilidades fueron identificadas mediante pruebas automatizadas utilizando herramientas como AddressSanitizer, MemorySanitizer, Control Flow Integrity, LibFuzzer y AFL. No se encontraron problemas críticos que permitan eludir todos los niveles de protección del navegador y ejecutar código en el sistema fuera del entorno sandbox. Como parte del programa de recompensas por la detección de vulnerabilidades para la versión actual, Google ha otorgado 25 recompensas por un total de 81 mil dólares estadounidenses (una recompensa de $10,000, tres de $7,500, tres de $7,000, una de $6,000, dos de $5,000, cuatro de $2,000, tres de $1,000 y una de $500). El monto de 6 recompensas aún no se ha determinado.
Fuente: opennet.ru


