Desarrolladores: Prepárense para la nueva configuración de cookies "SameSite=None; Secure"

code { background-color: transparent }

Actulización (10/28/2019): Corregimos los puntos 2 y 3 de la sección «Cómo prepararse; complejidades conocidas».

En mayo, Chrome anunció la implementación de un modelo para cookies seguro de forma predeterminada, basado en un nuevo sistema de clasificación de cookies (especificaciones). La iniciativa es parte de nuestro trabajo permanente tendiente a mejorar la privacidad y la seguridad en la Web.

Chrome tiene planificado implementar el nuevo modelo en la versión Chrome 80, en febrero de 2020. Mozilla y Microsoft también indicaron que pretenden implementar el nuevo modelo en Firefox y Edge de acuerdo con sus respectivos cronogramas. Si bien faltan algunos meses para la implementación de estos cambios, es importante que los desarrolladores que administran cookies evalúen si están preparados. En esta entrada de blog se describen algunos conceptos generales.

Consulta Explicación de las cookies SameSite en web.dev, donde se incluye información para desarrolladores.

Descripción de los contextos de cookies entre sitios («cross-site») y en el mismo sitio («same-site»)

Los sitios web suelen integrar servicios externos a los fines de la publicidad, las recomendaciones de contenido, los widgets de terceros, las funciones sociales incorporadas y otras prestaciones. Mientras navegas por la Web, es posible que esos servicios externos almacenen cookies en tu navegador y que, posteriormente, accedan a esas cookies para entregar experiencias personalizadas o medir la interacción con el público. Toda cookie está asociada a un dominio. Si el dominio asociado a una cookie coincide con un servicio externo y no con el sitio web de la barra de direcciones del usuario, se considera un contexto cross-site (o «de terceros»).

Algunos casos de uso cross-site menos evidentes incluyen las situaciones en las que una entidad que posee varios sitios web utiliza una cookie en todas esas propiedades. Aunque la misma entidad es propietaria de la cookie y de los sitios web, el contexto se sigue considerando cross-site o «de terceros» si el dominio de la cookie no coincide con los sitios desde los que se accede a la cookie.

Cuando un recurso externo de una página web accede a una cookie que no coincide con el dominio del sitio, es un contexto cross-site o «de terceros».

En cambio, el acceso a cookies en un contexto same-site (o «de primera mano») se da cuando el dominio de una cookie coincide con el dominio del sitio web de la barra de direcciones del usuario. Las cookies same-site suelen usarse para conservar el inicio de sesión de las personas en sitios web específicos, recordar sus preferencias y contribuir al análisis del sitio web.

 

Cuando un recurso de un sitio web accede a una cookie que coincide el sitio web que visita el usuario, es un contexto same-site o «de primera mano».

Un nuevo modelo para la seguridad y la transparencia de las cookies

Actualmente, si un desarrollador desea que solo sea posible acceder a una cookie en un contexto de primera mano, tiene la opción de aplicar una de dos configuraciones (SameSite=Lax o SameSite=Strict) para evitar el acceso externo. Sin embargo, son muy pocos los desarrolladores que aplican esta práctica recomendada, por lo que muchas cookies same-site quedan innecesariamente expuestas a riesgos, como los ataques de falsificación de solicitudes entre sitios.

A fin de proteger más sitios web y a sus usuarios, el nuevo modelo seguro de forma predeterminada da por sentado que todas las cookies deben protegerse del acceso externo a menos que se especifique lo contrario. Los desarrolladores deben usar una nueva configuración, SameSite=None, para designar aquellas cookies que admiten el acceso cross-site. Si se incluye el atributo SameSite=None, es necesario usar un atributo Secure adicional para que solo sea posible acceder a las cookies cross-site mediante conexiones HTTPS. El modelo no mitiga todos los riesgos relacionados con el acceso cross-site, pero ofrece protección contra los ataques de red.

Más allá de las ventajas inmediatas en términos de seguridad, la declaración explícita del uso de cookies cross-site implica una mayor transparencia y una mejor decisión del usuario. Por ejemplo, los sitios web podrían ofrecer a los usuarios controles minuciosos para administrar las cookies a las que solo se accede desde un solo sitio independientemente de aquellas a las que se accede desde varios sitios.

Implementación en Chrome a partir de febrero de 2020

A partir del lanzamiento de Chrome 80 en febrero, Chrome tratará las cookies sin un valor SameSite declarado como cookies SameSite=Lax. Solo las cookies con la opción SameSite=None; Secure estarán disponibles para acceso externo, siempre y cuando se acceda a ellas desde conexiones seguras. Los dispositivos de seguimiento de estado de la plataforma Chrome de SameSite=None y Secure seguirán actualizándose con la información de lanzamiento más reciente.

Mozilla reafirmó su compromiso con el nuevo modelo de clasificación de cookies mediante la declaración de su intención de implementar los requisitos SameSite=None; Secure para las cookies cross-site en Firefox. Microsoft anunció recientemente sus planes de comenzar a implementar el modelo de forma experimental en Microsoft Edge 80.

Cómo prepararse; complejidades conocidas

Si administras cookies cross-site, debes aplicar la opción SameSite=None; Secure a esas cookies. Si bien la implementación no debería resultar problemática para la mayoría de los desarrolladores, recomendamos que comiencen a hacer pruebas para identificar complejidades y casos especiales como los siguientes:

  • Por el momento, no todos los lenguajes ni todas las bibliotecas admiten el valor «None», por lo que los desarrolladores tienen que configurar el encabezado de la cookie directamente. En este repositorio de GitHub se incluyen instrucciones para implementar SameSite=None; Secure en distintos lenguajes, bibliotecas y marcos.
  • Es posible que algunos navegadores (incluidas algunas versiones de Chrome, Safari y UC Browser) interpreten el valor None de maneras inesperadas, lo que exige que los desarrolladores programen excepciones para esos clientes. Esta situación afecta a Android WebViews con tecnología de versiones anteriores de Chrome. Esta es una lista de clientes incompatibles conocidos.
  • Se recomienda que los desarrolladores de apps declaren la opción de cookie SameSite adecuada para Android WebViews con tecnología de versiones de Chrome compatibles con el valor None, tanto para las cookies a las que se accede mediante encabezados HTTP(S) como a las que se accede mediante la API de CookieManager de Android WebView, aunque el nuevo modelo no se aplicará en Android WebView sino hasta dentro de cierto tiempo.
  • Es posible que los administradores de TI empresariales tengan que implementar políticas especiales para revertir el navegador Chrome al comportamiento anterior transitoriamente 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 contextos de primera mano y de terceros, contempla la posibilidad de usar cookies separadas para obtener las ventajas en términos de seguridad del valor «SameSite=Lax» en un contexto de primera mano.
  • En

Explicación de las cookies SameSite se ofrece información específica sobre las situaciones antes descritas y sobre los canales para plantear problemas y dudas.

Para probar el efecto del nuevo comportamiento de Chrome en tu sitio o las cookies que administras, puedes ir a chrome://flags en Chrome 76+ y activar los experimentos «SameSite by default cookies» y «Cookies without SameSite must be secure». Además, estos experimentos se activarán de forma automática para un subconjunto de usuarios de Chrome 79 Beta. Es posible que algunos usuarios beta con los experimentos activados experimenten problemas de compatibilidad con los servicios que todavía no admiten el nuevo modelo. Para abandonar los experimentos beta, los usuarios pueden desactivarlos en chrome://flgas.

Si administras cookies a las que solo se accede en un contexto same-site (cookies same-site), no debes hacer nada; Chrome evitará automáticamente que las entidades externas accedan a esas cookies, incluso si falta el atributo «SameSite» o si no se definió un valor. Dicho eso, recomendamos que apliques un valor SameSite adecuado (Lax o Strict) y que no dependas del comportamiento predeterminado del navegador, ya que no todos los navegadores protegen las cookies same-site de forma predeterminada.

Por último, si te preocupa la preparación de los proveedores y de las otras partes que prestan servicios a tu sitio web, puedes buscar advertencias de la consola de las herramientas del desarrollador de Chrome 77+ respecto de las páginas con cookies cross-site que no tienen la configuración necesaria:

A cookie associated with a cross-site resource at (cookie domain) was set without the `SameSite` attribute. A future release of Chrome will only deliver cookies with cross-site requests if they are set with `SameSite=None` and `Secure`. You can review cookies in developer tools under Application>Storage>Cookies and see more details at https://www.chromestatus.com/feature/5088147346030592 and https://www.chromestatus.com/feature/5633521622188032.

Algunos proveedores (lo que incluye algunos servicios de Google) implementarán los cambios necesarios en los meses previos al lanzamiento de Chrome 80 en febrero. Es recomendable que te pongas en contacto con tus socios para confirmar si están preparados.

Publicado por Barb Palser, Chrome and Web Platform Partnerships


Source: Google Dev

Deja un comentario