Client Hints es una extensión del protocolo HTTP que permite a los servidores solicitar al cliente (generalmente un navegador web ) información sobre su configuración. Esto ayuda al servidor a personalizar sus respuestas; por ejemplo, un servidor puede optar por enviar una imagen más pequeña si el cliente indica que tiene una pantalla muy pequeña. El cliente puede responder a esta solicitud proporcionando la información solicitada mediante el envío de datos utilizando una parte específica del protocolo HTTP denominada campos de encabezado HTTP , o bien exponiendo dicha información al código JavaScript que se ejecuta en la página web.
Propuesta por 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 fragmentos de código que un cliente envía para identificarse ante un servidor. Si bien inicialmente se concibieron con fines estadísticos, estos encabezados se habían convertido cada vez más en una herramienta para rastrear a los usuarios en diferentes sitios web. Client Hints buscaba abordar este problema proporcionando una forma más controlada de compartir la misma información. A pesar de su enfoque en la privacidad, el diseño inicial de Client Hints recibió críticas de otros navegadores. Una de las principales preocupaciones que se planteó fue que el protocolo podría permitir nuevas formas de rastreo por parte de dominios de terceros. Los dominios de terceros son servidores web que no pertenecen al 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 2024, más del 75 % de los usuarios de la web tenían navegadores compatibles con Client Hints.
Desde entonces, los investigadores de privacidad han expresado su preocupación por el hecho de que Client Hints se utilice principalmente mediante código JavaScript para rastrear a los usuarios. En 2023, un estudio de la KU Leuven y la Universidad de Radboud reveló que, al analizar los 100 000 sitios web más visitados de internet, la mayoría de los accesos a Client Hints provenían de código JavaScript utilizado con fines de seguimiento y publicidad .
Fondo
En 1992, se introdujo una extensión al protocolo HTTP que añadía una User-Agentcabecera HTTP que se enviaba del cliente al servidor y contenía una cadena simple que identificaba el nombre del cliente y su versión. La cabecera tenía como único fin estadístico y el seguimiento de los clientes que infringían el protocolo. Desde entonces, las cabeceras User-Agent se han vuelto cada vez más complejas y han comenzado a contener información significativa e identificativa del usuario. A menudo, esta información se utiliza para realizar la huella digital del navegador , lo que permite a los sitios rastrear a los usuarios en diferentes 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. En 2021, la especificación se actualizó al estado de una solicitud de comentarios (RFC) experimental. [ 2 ] Esta designación indicaba que el IETF había aceptado la especificación Client Hints como un estándar de Internet , pero que aún tenía cuestiones sin resolver o que aún no había logrado una adopción generalizada en Internet. [ 3 ] Casi al mismo tiempo, las especificaciones sobre cómo los navegadores web manejarían las HTTP Client Hints en la web se publicaron como un borrador en un informe del Grupo Comunitario del W3C . [ 2 ]
En 2020, Google anunció su intención de descontinuar la declaración de agente de usuario (UA) por parte del navegador. [ 4 ] Esta descontinuació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. [ 5 ] Sin embargo, la propuesta inicial de Client Hints fue recibida con resistencia por parte de otros navegadores debido a preocupaciones de privacidad. En 2019, Brave expresó preocupaciones sobre la propuesta inicial, citando formas en que podría usarse para rastrear a los usuarios en Internet. [ 6 ] Mozilla , la empresa que hace Firefox , inicialmente clasificó la propuesta como dañina, y Apple , la empresa que hace Safari, también adoptó una postura negativa contra la propuesta. [ 7 ] 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. [ 8 ]
Desde su oposición inicial, Mozilla ha actualizado su postura a neutral [ 7 ] y Brave ha sincronizado su implementación de Client Hints con la de Chrome. [ 2 ] A partir de 2024, más del 75% de todos los usuarios de la web utilizan 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. [ 9 ] El proceso implica que el servidor envíe al UA una respuesta con un Accept-CHencabezado HTTP , que contiene una lista de encabezados HTTP Client Hint que requiere. [ 2 ] Posteriormente, se espera que el UA devuelva las sugerencias de cliente solicitadas con cada respuesta posterior, siempre que admita dichas sugerencias. Estos encabezados son utilizados por el servidor para tomar decisiones sobre qué tipo de contenido servir al UA. [ 9 ] Si el UA no entiende o no admite una sugerencia de cliente en particular, se le indica que la ignore. En los casos en que una sugerencia de cliente específica no se pueda almacenar en caché , el servidor debe especificar los encabezados de sugerencias de cliente aplicables en un encabezado separado Varyenviado al UA. Esto garantiza que los mecanismos de almacenamiento en caché entiendan que las respuestas pueden variar según los diferentes valores de las sugerencias de cliente. [ 9 ] Para las sugerencias del cliente que identifican específicamente un navegador, se incluyen identificadores de navegador aleatorios adicionales como refuerzo para evitar que los usuarios del protocolo dependan de comportamientos idiosincrásicos específicos del navegador. [ 10 ] [ 11 ]
Para los agentes de usuario que permiten JavaScript , existe 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 Client Hints. [ 11 ] 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 probablemente 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, incluyendo 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 el permiso del usuario o realizar comprobaciones adicionales. [ 12 ]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 OK ... 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 /gallery HTTP / 1.1 ... Ancho de la ventana gráfica: 1920 ... El servidor puede entonces usar la información del Viewport-Widthencabezado para decidir qué tipo de contenido servir al cliente. Por ejemplo, si el servidor tiene una imagen particularmente grande, se puede configurar para que devuelva una imagen más pequeña si la imagen no cabe en la ventana gráfica . [ 13 ]
preocupaciones sobre la privacidad
Cuando se publicó originalmente la propuesta de Client Hints, generó importantes preocupaciones sobre la privacidad. Proveedores de navegadores como Brave y Mozilla señalaron que una disposición específica del borrador inicial permitía a los sitios web instruir al navegador para que proporcionara datos de Client Hint a dominios de terceros. Los dominios de terceros son aquellos que no ejecutan código JavaScript, sino que cargan recursos como imágenes y archivos de script. [ 6 ] Esta disposición del borrador inicial permitiría a estos dominios de terceros, como las redes de distribución de contenido (CDN) y los proveedores de servicios en la nube , acceder a esta información . Las CDN distribuyen el contenido de los sitios web a través de una red de servidores geográficamente dispersos para mejorar la velocidad y la fiabilidad del sitio web. Los proveedores de servicios en la nube, como Cloudflare y Google Cloud, ofrecen servicios como almacenamiento de datos, capacidad de procesamiento e infraestructura para sitios web y aplicaciones. Estas entidades podrían rastrear a los usuarios en la web instruyendo al navegador para que enviara información de Client Hint a sus servidores junto con el sitio web original. [ 6 ] [ 14 ] 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 información que comprometía la privacidad, información que no se podía obtener simplemente leyendo los encabezados HTTP . [ 14 ] Además, las extensiones que buscan preservar la privacidad del usuario, como la extensión NoScript, también se opusieron a la propuesta argumentando que dificultaría significativamente evitar que los sitios web extrajeran información que comprometía la privacidad de los usuarios. [ 6 ]
Desde la adopción de Client Hints por parte de los principales navegadores como Google Chrome y Microsoft Edge , los investigadores de privacidad han expresado su preocupación por su uso real para el seguimiento. [ 15 ] Un estudio de 2023 realizado por investigadores de la KU Leuven y la Universidad de Radboud descubrió que, de los 100.000 sitios web más importantes, el 60 % de los archivos JavaScript cargados por las páginas web accedían a las API de JavaScript de Client Hints , siendo la mayoría scripts de seguimiento y publicidad , muchos de los cuales provenían de Google . Más del 90 % de estos archivos de script exfiltraban los datos obtenidos a dominios de seguimiento. [ 16 ] 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 en Internet era baja, un número significativo de dominios de terceros conocidos por el seguimiento accedían a los datos de HTTP Client Hints. [ 17 ]
Véase también
Referencias
Citas
- ↑ Senol & Acar 2023 , pág. 91.
- ^ Wiefling , Hönscheid e Iacono 2024 , pág . 3.
- ↑ Hoffman y Harris 2006 .
- ↑ Cimpanu 2020 .
- ↑ Senol & Acar 2023 , págs.92 , 93.
- 1 2 3 4 Cimpanu 2019 .
- ^ Senol y Acar 2023 , pág. 96.
- ↑ Senol & Acar 2023 , pág. 93.
- 1 2 3 Grigorik y Weiss 2021 .
- ↑ Taylor & Weiss 2024 .
- ^ Senol y Acar 2023 , pág. 95.
- ↑ "NavigatorUAData: método getHighEntropyValues() - API web" . Mozilla Developer Network . 26 de julio de 2024. Consultado el 21 de septiembre de 2024 .
- ↑ "Mejora de la privacidad del usuario y la experiencia del desarrollador con User-Agent Client Hints" . Privacidad y seguridad. Chrome para desarrolladores . Archivado del original el 2 de junio de 2024. Consultado el 2 de junio de 2024 .
- 1 2 "Las preocupaciones de Brave con la propuesta de sugerencias para el cliente" . Brave . 09/05/2019. Archivado del original el 26/06/2024 . Recuperado el 02/06/2024 .
- ↑ Wiefling, Hönscheid & Iacono 2024 , p. 11.
- ^ Senol y Acar 2023 , págs. 99-100, 102.
- ↑ Wiefling, Hönscheid & Iacono 2024 , p. 10.
Fuentes
- 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 del original el 26 de junio de 2024. Consultado el 25 de junio de 2024 .
- Hoffman, Paul E.; Harris, Susan R. (1 de septiembre de 2006). El Tao del IETF: una guía para principiantes del Grupo de Trabajo de Ingeniería de Internet (Informe). Grupo de Trabajo de Ingeniería de Internet.
- Grigorik, I.; Weiss, Y. (febrero de 2021). Sugerencias para clientes HTTP . IETF . doi : 10.17487/RFC8942 . RFC 8942. Recuperado el 11 de febrero de 2021 .
- Taylor, Mike; Weiss, Yoav, eds. (1 de abril de 2024). "User-Agent Client Hints § 6.2. GREASE-like UA Brand Lists" . WICG . Archivado del original el 18 de junio de 2024. Recuperado el 26 de junio de 2024 .
- Cimpanu, Catalin (16 de mayo de 2019). "Preocupaciones sobre la privacidad respecto al próximo estándar web Client-Hints" . ZDNET . Archivado del original el 1 de diciembre de 2023. Recuperado el 2 de junio de 2024 .
- Wiefling, Stephan; Hönscheid, Marian; Iacono, Luigi Lo (22 de mayo de 2024), "¿Una medida de privacidad al revés? Investigación sobre el uso de sugerencias de cliente HTTP en la web", Actas de la 19.ª Conferencia Internacional sobre Disponibilidad, Fiabilidad y Seguridad , págs. 1-12 , arXiv : 2405.13744 , doi : 10.1145/3664476.3664478 , ISBN 979-8-4007-1718-5
- 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 .
Enlaces externos
- Sugerencias del agente de usuario para el cliente: Borrador del informe del grupo comunitario, 9 de febrero de 2021
- Encabezados del Protocolo de Transferencia de Hipertexto
- Privacidad en Internet