Las sugerencias de cliente son una extensión del protocolo de transferencia de hipertexto (HTTP) existente que permite a los servidores web solicitar al cliente (que normalmente es un navegador web ) información sobre su configuración. El cliente puede optar por responder a esta solicitud publicitando la información solicitada sobre sí mismo mediante el envío de los datos utilizando una parte específica del protocolo HTTP denominada campos de encabezado HTTP o exponiendo la misma información al código JavaScript que se ejecuta en una página web. Esto puede ayudar al servidor a adaptar sus respuestas al cliente; por ejemplo, un servidor puede optar por enviar una imagen más pequeña si un cliente anuncia que tiene una pantalla muy pequeña.
Propuesto por los ingenieros de Google en 2013, Client Hints se diseñó como una alternativa centrada en la privacidad a los encabezados de agente de usuario . Esto se hizo como parte de una iniciativa de Google llamada Privacy Sandbox . Los encabezados de agente de usuario son texto enviado por un cliente a un servidor para identificar al cliente. Si bien inicialmente estaban destinados a fines estadísticos, estos encabezados se habían convertido cada vez más en una herramienta para rastrear a los usuarios en los sitios web. Client Hints tenía como objetivo abordar este problema al proporcionar una forma más controlada de compartir la misma información. A pesar del enfoque en la privacidad, el diseño inicial de Client Hints enfrentó críticas de otros navegadores. Una de las principales preocupaciones que se planteó fue que el protocolo podría permitir nuevas formas de seguimiento por parte de dominios de terceros. Los dominios de terceros son servidores web que no son propiedad del sitio web y que cargan recursos como imágenes y archivos de script. A pesar de estas preocupaciones, Chrome implementó la compatibilidad con Client Hints en agosto de 2020. Para mayo de 2024, más del 75% de los usuarios web usaban navegadores que admitían Client Hints.
Desde entonces, los investigadores en materia de privacidad han expresado su preocupación por el hecho de que Client Hints se esté utilizando principalmente en código JavaScript para rastrear a los usuarios. En 2023, un estudio de la KU Leuven y la Universidad Radboud descubrió que, entre los 100.000 sitios web más importantes de Internet, la mayoría de los accesos a Client Hints procedían de código JavaScript utilizado con fines de seguimiento y publicidad .
Fondo
En 1992, se introdujo una extensión del protocolo HTTP que añadía un User-Agent encabezado HTTP que se enviaba desde el cliente al servidor y que contenía una cadena sencilla que identificaba el nombre del cliente y su versión. El encabezado estaba pensado únicamente para fines estadísticos y para rastrear a los clientes que violaban el protocolo. Desde entonces, los encabezados User-Agent se han vuelto cada vez más complejos y han empezado a contener información significativa e identificable de forma única sobre el usuario. A menudo, esta información se utiliza para realizar la identificación del navegador , lo que permite a los sitios rastrear a los usuarios en todos los sitios de forma pasiva sin tener que cargar ningún JavaScript para el usuario. [1]
Historia
El borrador original de la especificación Client Hints fue propuesto en 2013 por ingenieros de Google . Las especificaciones se convirtieron en un borrador del Grupo de Trabajo de Ingeniería de Internet (IETF) en noviembre de 2015. Posteriormente, en 2021, la especificación se actualizó al estado de una solicitud de comentarios (RFC) experimental. [2] Esta designación indicó que el IETF había aceptado la especificación Client Hints como un estándar de Internet , pero que todavía tenía preguntas sin resolver o que aún no había ganado una adopción generalizada en Internet. [3] Casi al mismo tiempo, las especificaciones sobre cómo los navegadores web manejarían las sugerencias de cliente HTTP en la web se publicaron como borrador en un informe del grupo comunitario del W3C. [2]
En 2020, Google anunció su intención de desaprobar la declaración de agente de usuario (UA) por parte del navegador. [4] Esta desaprobación fue parte de una iniciativa más amplia de Google para realizar cambios en la web que permitan a los sitios web acceder a la información del usuario sin comprometer la privacidad llamada Privacy Sandbox . Citaron Client Hints como una alternativa que preserva la privacidad a los encabezados de agente de usuario, ya que permitían una forma más controlada de compartir la misma información. [1] Sin embargo, la propuesta inicial de Client Hints se encontró con el rechazo de otros navegadores debido a preocupaciones sobre la privacidad. En 2019, Brave expresó sus preocupaciones sobre la propuesta inicial, citando formas en las que podría usarse para rastrear a los usuarios en Internet. [5] Mozilla , la empresa que fabrica Firefox , inicialmente clasificó la propuesta como dañina, y Apple , la empresa que fabrica Safari, también adoptó una postura negativa contra la propuesta. [1] A pesar de estas preocupaciones, Chrome implementó soporte para HTTP Client Hints en agosto de 2020. Si bien la descontinuación de las cadenas UA se retrasó debido a la pandemia de COVID-19 , este proceso se completó en febrero de 2023. [1]
Desde su oposición inicial, Mozilla ha actualizado su postura a neutral y Brave ha sincronizado su implementación de Client Hints con la de Chrome. [1] A partir de mayo de 2024, más del 75% de todos los usuarios web usan navegadores que admiten Client Hints. [2]
Mecanismo
El protocolo Client Hints define dos entidades: un agente de usuario (UA) (normalmente un navegador ) y un servidor . Estas dos entidades se comunican entre sí para negociar qué tipo de contenido se debe servir al usuario. [6] El proceso implica que el servidor envíe al UA una respuesta con un Accept-CH encabezado HTTP , que contiene una lista de encabezados HTTP Client Hint que requiere. Posteriormente, se espera que el UA devuelva las sugerencias de cliente solicitadas con cada respuesta posterior, siempre que admita esas sugerencias. Luego, el servidor utiliza estos encabezados para tomar decisiones sobre qué tipo de contenido servir al UA. [2] Si el UA no entiende o no admite una sugerencia de cliente en particular, se le indica que ignore la sugerencia de cliente en particular. En los casos en los que no se puede almacenar en caché una sugerencia de cliente específica , el servidor debe especificar los encabezados de sugerencias de cliente aplicables en un Varyencabezado separado enviado al UA. [1] Esto garantiza que los mecanismos de almacenamiento en caché comprendan que las respuestas pueden variar en función de diferentes valores de sugerencias de cliente. [7] Para las sugerencias de clientes que identifican específicamente un navegador, se incluyen identificadores de navegador aleatorios adicionales como una ayuda para evitar que los usuarios del protocolo confíen en comportamientos idiosincrásicos específicos del navegador. [8]
Para los UA que permiten JavaScript , hay una opción adicional disponible a través de la APInavigator.userAgentData de JavaScript . Esta API permite que JavaScript recupere la misma información que proporcionan los encabezados de sugerencias del cliente. [1] La API separa los datos que proporciona en dos tipos: datos de baja entropía y datos de alta entropía. Los datos de baja entropía corresponden a información que es probable que sea similar en un gran grupo de usuarios, como la plataforma en la que se ejecuta el navegador y la marca del navegador. Por el contrario, los datos de alta entropía pueden variar significativamente entre usuarios, incluidos detalles como el número de versión exacto del navegador y el modelo del dispositivo del usuario. Los datos de baja entropía se incluyen en la API como parámetros de objeto, mientras que los datos de alta entropía que pueden identificar de forma única al usuario deben ser obtenidos explícitamente por el cliente llamando a la función en la API que permite al navegador solicitar permiso al usuario o realizar comprobaciones adicionales. [9]getHighEntropyValues()
Ejemplo
Para iniciar una negociación de contenido , un servidor HTTP agrega el Accept-CHencabezado a la respuesta de una solicitud HTTP:
HTTP / 1.1 200 está bien
...
Accept-CH: Ancho de la ventana gráfica
...
Si el agente de usuario admite la sugerencia de cliente de ancho de ventana gráfica, el agente de usuario agregará el Viewport-Widthencabezado en cada solicitud posterior.
GET /galería HTTP / 1.1
...
Ancho de la ventana gráfica: 1920
...
El servidor puede entonces utilizar la información del Viewport-Widthencabezado para tomar una decisión sobre el tipo de contenido que se le ofrecerá al cliente. Por ejemplo, si el servidor tiene una imagen particular que es extremadamente grande, se puede configurar para que devuelva una imagen más pequeña si la imagen no cabe en la ventana gráfica . [10]
Preocupaciones sobre la privacidad
Cuando se publicó originalmente la propuesta de Client Hint, se encontró con importantes preocupaciones sobre la privacidad. Los proveedores de navegadores como Brave y Mozilla señalaron que una disposición particular en el borrador inicial de la propuesta permitía a los sitios web indicar al navegador que proporcionara datos de Client Hint a dominios de terceros. Los dominios de terceros son dominios que no ejecutan ningún código JavaScript, sino que cargan recursos como imágenes y archivos de script. [5] La disposición en el borrador inicial permitiría a estos dominios de terceros como las redes de entrega de contenido (CDN), que distribuyen el contenido del sitio web a través de una red de grupos de servidores geográficamente dispersos para mejorar la velocidad y la confiabilidad del sitio web y los proveedores de servicios en la nube como Cloudflare y Google Cloud que ofrecen servicios como almacenamiento de datos, potencia informática e infraestructura para sitios web y aplicaciones para rastrear a los usuarios en la web al indicarle al navegador que envíe información de Client Hint a sus servidores. [5] [11] Además, también se plantearon preocupaciones de que la propuesta Client Hint era demasiado permisiva y permitía explícitamente que se filtrara a los servidores nueva información que comprometiera la privacidad que no se podía obtener simplemente leyendo los encabezados HTTP . [11] Además, las extensiones que tienen como objetivo preservar la privacidad del usuario, como la extensión NoScript, también se opusieron a la propuesta con el argumento de que haría mucho más difícil evitar que los sitios filtren información que comprometa la privacidad de los usuarios. [5]
Desde que los principales navegadores, como Google Chrome y Microsoft Edge , adoptaron Client Hints , los investigadores de privacidad han expresado su preocupación por su uso en el mundo real para el seguimiento. [2] Un estudio de 2023 realizado por investigadores de la KU Leuven y la Universidad Radboud descubrió que, de los 100 000 sitios web principales, el 60 % de los archivos JavaScript cargados por las páginas web accedieron a las API JavaScript de Client Hints , y la mayoría eran scripts de seguimiento y publicidad , muchos de los cuales provenían de Google . Más del 90 % de estos archivos de scripts exfiltraron los datos obtenidos a dominios de seguimiento. [1] Un estudio posterior de mayo de 2024 realizado por investigadores de la Universidad de Ciencias Aplicadas Hochschule Bonn-Rhein-Sieg señaló que, si bien la adopción general de Client Hints entre los sitios web de Internet fue baja, una cantidad significativa de dominios de terceros conocidos por el seguimiento accedieron a los datos de HTTP Client Hints. [2]
Véase también
Referencias
- ^ abcdefgh Senol, Asuman; Acar, Gunes (26 de noviembre de 2023). "Revelando el impacto de la reducción del agente de usuario y las sugerencias del cliente: un estudio de medición". Actas del 22.º taller sobre privacidad en la sociedad electrónica. ACM. págs. 91–106. doi :10.1145/3603216.3624965. ISBN 979-8-4007-0235-8Archivado desde el original el 26 de junio de 2024. Consultado el 25 de junio de 2024 .
- ^ abcdef Wiefling, Stephan; Hönscheid, Marian; Iacono, Luigi Lo (22 de mayo de 2024), "¿Una medida de privacidad al revés? Investigación del uso de sugerencias de cliente HTTP en la Web", arXiv : 2405.13744 [cs]
- ^ Hoffman, Paul E.; Harris, Susan R. (1 de septiembre de 2006). El Tao del IETF: una guía para principiantes sobre el Grupo de trabajo de ingeniería de Internet (informe). Grupo de trabajo de ingeniería de Internet.
- ^ Cimpanu, Catalin (14 de enero de 2020). "Google eliminará gradualmente las cadenas de agente de usuario en Chrome". ZDNET . Consultado el 6 de diciembre de 2024 .
- ^ abcd Cimpanu, Catalin (16 de mayo de 2019). "Se plantearon inquietudes sobre la privacidad en relación con el próximo estándar web Client-Hints". ZDNET . Archivado desde el original el 2023-12-01 . Consultado el 2024-06-02 .
- ^ Grigorik, I.; Weiss, Y. (febrero de 2021). Sugerencias para clientes HTTP. IETF . doi : 10.17487/RFC8942 . RFC 8942 . Consultado el 11 de febrero de 2021 .
- ^ "Consejos para clientes HTTP". HTTP. MDN . 2024-03-05. Archivado desde el original el 2024-06-07 . Consultado el 2024-06-02 .
- ^ Taylor, Mike; Weiss, Yoav, eds. (1 de abril de 2024). "User-Agent Client Hints § 6.2. GREASE-like UA Brand Lists". WICG . Archivado desde el original el 18 de junio de 2024 . Consultado el 26 de junio de 2024 .
- ^ "NavigatorUAData: método getHighEntropyValues() - API web". Red de desarrolladores de Mozilla . 2024-07-26 . Consultado el 2024-09-21 .
- ^ "Mejora de la privacidad del usuario y la experiencia del desarrollador con User-Agent Client Hints". Privacidad y seguridad. Chrome para desarrolladores . Archivado desde el original el 2024-06-02 . Consultado el 2024-06-02 .
- ^ ab "Las preocupaciones de Brave con la propuesta de Client-Hints". Brave . 2019-05-09. Archivado desde el original el 2024-06-26 . Consultado el 2024-06-02 .
Enlaces externos
- Documentación sobre el uso de ClientHints por parte de Wikimedia para combatir el vandalismo
Enlaces externos
- Sugerencias para el cliente de agente de usuario: borrador del informe del grupo comunitario, 9 de febrero de 2021