Llega la nueva configuración de cookies SameSite=None; Secure

Jueves, 16 de enero del 2020

Esta es una entrada cruzada del blog para desarrolladores de Chromium que se centra en cómo afectarán los cambios de Chrome al funcionamiento de tu sitio web y a los usuarios.

En mayo, Chrome anunció un modelo de cookies con seguridad predeterminada, habilitado por un nuevo sistema de clasificación de cookies (especificaciones). Esta iniciativa forma parte de nuestros esfuerzos continuos por mejorar la privacidad y la seguridad en la Web.

Chrome tiene previsto implementar el nuevo modelo con Chrome 80 en febrero del 2020. Mozilla y Microsoft también han indicado su intención de implementar el nuevo modelo en Firefox y Edge, a su propio ritmo. Aunque aún faltan varios meses para implementar los cambios en Chrome, es importante que los desarrolladores que gestionan cookies evalúen ya si sus sitios web están preparados. Esta entrada de blog describe conceptos generales. Consulta el artículo Explicación de las cookies de SameSite en web.dev para ver consejos para desarrolladores.

Los sitios web suelen integrar servicios externos con fines publicitarios, recomendaciones de contenido, widgets de terceros, inserciones de redes sociales y otras funciones. Cuando navegas por la Web, estos servicios externos pueden almacenar cookies en tu navegador y acceder a ellas para ofrecer experiencias personalizadas o medir la interacción de la audiencia. Cada cookie tiene un dominio asociado. Si el dominio asociado a una cookie coincide con un servicio externo y no con el sitio web que se muestra en la barra de direcciones del usuario, se considera que es un contexto de varios sitios (o de sitios de terceros).

Un caso práctico no tan obvio de este contexto podría ser una entidad que tiene varios sitios web y usa una cookie en esas propiedades. Aunque la misma entidad es la propietaria de la cookie y de los sitios web, se sigue considerando un contexto de varios sitios web o de terceros cuando el dominio de la cookie no coincide con los sitios desde los que se accede a ella.

El dominio del sitio no coincide con el dominio de la cookie

Cuando un recurso externo de una página web accede a una cookie que no coincide con el dominio del sitio, se trata de un contexto de varios sitios o de sitio de terceros.

Por el contrario, el acceso a las cookies en el contexto de un mismo sitio (o sitio propio) se produce cuando el dominio de una cookie coincide con el dominio del sitio web que aparece en la barra de direcciones del usuario. Las cookies del mismo sitio suelen servir para mantener la sesión de los usuarios iniciada en sitios web concretos, recordar sus preferencias y permitir las analíticas de sitios.

El dominio del sitio coincide con el dominio de la cookie

Cuando un recurso de una página web accede a una cookie que coincide con el sitio que el usuario está visitando, se trata de un contexto de un mismo sitio o de sitio propio.

Hoy en día, si solo se quiere permitir el acceso a una cookie en un contexto de sitio propio, el desarrollador puede aplicar uno de estos dos ajustes (SameSite=Lax o SameSite=Strict) para impedir el acceso externo. Sin embargo, muy pocos desarrolladores siguen esta práctica recomendada, por lo que una gran cantidad de cookies de un mismo sitio se ven expuestas innecesariamente a amenazas como ataques de falsificación de solicitud entre sitios.

Para proteger más sitios web y a sus usuarios, con el nuevo modelo de seguridad predeterminado se presupone que todas las cookies deben protegerse frente a accesos externos, a menos que se especifique lo contrario. Los desarrolladores deben usar una nueva configuración de cookies, SameSite=None, para designar aquellas cookies a las que se puede acceder desde varios sitios. Con el atributo SameSite=None, se debe incluir un atributo Secure adicional para que solo se pueda acceder a las cookies de varios sitios mediante conexiones HTTPS. Con esta medida no se mitigarán todos los riesgos asociados al acceso de varios sitios a las cookies, pero sí se protegerán frente a los ataques de red.

Además de ofrecer ventajas de seguridad inmediatas, la declaración explícita de las cookies de varios sitios ofrece una mayor transparencia y una mayor capacidad de elección a los usuarios. Por ejemplo, los navegadores pueden ofrecer a los usuarios controles más precisos para gestionar las cookies a las que solo puede acceder un sitio independientemente de las cookies a las que se accede desde varios sitios.

Restricción de Chrome a partir de febrero del 2020

Con la implementación de Chrome 80 en febrero, Chrome tratará las cookies que no tengan un valor de SameSite declarado como cookies SameSite=Lax. Solo se podrá acceder de forma externa a las cookies que tengan el ajuste SameSite=None; Secure, siempre que el acceso sea a través de conexiones seguras. Los objetos de seguimiento de estado de la plataforma Chrome SameSite=None y Secure se seguirán actualizando con la información de lanzamiento más reciente.

Mozilla ha confirmado que admite el nuevo modelo de clasificación de cookies, junto con su intención de implementar los requisitos de SameSite=None; Secure en las cookies de varios sitios en Firefox. Hace poco, Microsoft anunció sus planes de empezar a implementar el modelo empezando con un experimento en Microsoft Edge 80.

Cómo prepararse; dificultades conocidas

Si gestionas cookies de varios sitios, deberás aplicar el ajuste SameSite=None; Secure a esas cookies. La implementación debería ser sencilla para la mayoría de los desarrolladores, pero te recomendamos que empieces ya a hacer pruebas para identificar complejidades y casos especiales como los siguientes:

  • Por el momento, no todos los idiomas ni las bibliotecas admiten el valor None, por lo que los desarrolladores deben configurar el encabezado de las cookies directamente. En este repositorio de GitHub se proporcionan instrucciones para implementar SameSite=None; Secure en varios idiomas, bibliotecas y frameworks.
  • Es posible que algunos navegadores, incluidas algunas versiones de Chrome, Safari y UC Browser, gestionen el valor None de forma no deseada y que los desarrolladores deban programar en el código excepciones para esos clientes. En este caso se incluyen componentes WebView de Android que utilizan versiones anteriores de Chrome. Consulta la lista de clientes incompatibles conocidos.
  • Se recomienda a los desarrolladores de aplicaciones que declaren la configuración de SameSite cookie adecuada para WebViews de Android basada en versiones de Chrome que sean compatibles con el valor None, tanto para cookies a las que se accede mediante encabezados HTTP o HTTPS como mediante la API CookieManager de Android WebView, aunque el nuevo modelo no se implementará en el WebView de Android hasta más adelante.
  • Es posible que los administradores de TI de las empresas deban implementar políticas especiales para volver temporalmente al comportamiento antiguo del navegador Chrome si algunos servicios, como el inicio de sesión único o las aplicaciones internas, no están listos para el lanzamiento de febrero.
  • Si tienes cookies a las que accedes en un contexto tanto de sitio propio como de terceros, plantéate la posibilidad de usar cookies independientes en cada caso para obtener las ventajas de seguridad de SameSite=Lax en el contexto de sitio propio.

En el artículo Explicación de las cookies de SameSite se ofrecen consejos concretos para las situaciones mencionadas anteriormente y canales para informar de problemas y consultar dudas.

Para probar el efecto del nuevo comportamiento de Chrome en tu sitio o en las cookies que gestionas, puedes ir a chrome://flags en Chrome 76 y habilitar los experimentos "SameSite by default cookies" y "Cookies without SameSite must be secure". Además, estos experimentos se habilitarán automáticamente en un subconjunto de usuarios de la versión beta de Chrome 79. Algunos usuarios de la versión beta que tengan los experimentos habilitados podrían tener problemas de incompatibilidad con servicios que aún no admitan el nuevo modelo. Para evitar estos problemas, pueden ir a chrome://flags e inhabilitar los experimentos.

Si gestionas cookies a las que solo se accede en un contexto de un mismo sitio (SameSite), no es necesario que hagas nada. Chrome impedirá automáticamente que entidades externas accedan a estas cookies, aunque falte el atributo SameSite o no se haya especificado ningún valor. Sin embargo, te recomendamos que apliques un valor de SameSite adecuado (Lax o Strict) y que no te bases en el comportamiento predeterminado del navegador, ya que no todos los navegadores protegen las cookies de un mismo sitio de forma predeterminada.

Por último, si te preocupa la preparación de los proveedores de servicios de tu sitio web, puedes consultar las advertencias de la consola de herramientas de desarrollo en Chrome 77 y versiones posteriores si una página contiene cookies de varios sitios que no tienen la configuración adecuada:

Se ha configurado una cookie asociada a un recurso de varios sitios de (dominio de cookie) sin el atributo "SameSite"

Algunos proveedores, incluidos algunos servicios de Google, implementarán los cambios necesarios en los meses previos al lanzamiento de Chrome 80 en febrero. Te recomendamos que te pongas en contacto con tus partners para confirmar que están preparados.