SameSite = Lax por defecto, ya en Chrome 80 estable (aunque todavía no para todos)

El otro día, un colega atento (gracias, Lena) informó de un error extraño: el servidor normalmente configuraba la cookie en el navegador, pero no regresaba. Todo funcionó el día anterior, pero ahora la cookie estaba configurada, pero después de unos segundos desapareció mágicamente (aunque debería durar 24 horas). Fue reproducido solo por unas pocas personas en el equipo y solo en el nuevo Chrome 80, pero el resto en Chrome tenía exactamente la misma versión, todo estaba en orden. En otros navegadores, todo funcionaba como un reloj. Místico. Comenzaron a resolverlo, y después de un tiempo, la consola de Chrome notó una advertencia para el encabezado de respuesta que configuraba la cookie:
A cookie associated with a cross-site resource at _your_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`.

Comenzaron a estudiar qué era, y gradualmente se hizo evidente cómo surgió el error y por qué no todos lo mostraron. Dado que nuestro servicio debe procesar solicitudes de diferentes dominios, este SameSitees solo nuestro caso. Agregaron SameSite=None; Secure, y el problema se resolvió para nosotros.

¿Porqué es eso?


Inicialmente, de acuerdo con el estándar HTTP, el navegador envió cookies (o solo cookies) para cualquier solicitud al dominio correspondiente. Esto abrió oportunidades para un ataque CSRF, es decir, permitió que personas sin escrúpulos, bajo ciertas circunstancias, obtuvieran acceso a algunos recursos bajo la apariencia de desprevenidos de buena fe, simplemente usando sus cookies.

En 2016, se introdujo un atributo SameSiteque le permite controlar si el navegador enviará cookies si la página envía una solicitud a otro dominio. Los desarrolladores tienen la oportunidad de bloquear la transferencia de sus cookies, si la solicitud se ejecuta desde un sitio de terceros. Para esto, el atributo SameSitetenía que establecerse explícitamente en Estricto.(las cookies se transmiten solo cuando se solicitan y transitan desde el dominio al que pertenecen), o Lax (las cookies se transmiten tras la transición al sitio desde otros sitios mediante un enlace directo, pero no se transmiten a otras solicitudes de ellos, por ejemplo, cuando una solicitud de AJAX o la carga de imágenes ) La ausencia SameSiteera equivalente SameSite=None, es decir, de forma predeterminada, las cookies se transmitían aún en cualquier solicitud.

En mayo de 2019, los desarrolladores de Google Chrome anunciaron que cambiarían gradualmente este comportamiento e interpretarían la ausencia de SameSite como SameSite=Lax(más aquí) Es decir, de forma predeterminada, el navegador bloqueará la transmisión de cookies para las solicitudes de la página actual a cualquier otro recurso, excepto los clics directos en el enlace. Los desarrolladores de Firefox y Edge han anunciado que con el tiempo, también implementarán este cambio en sus navegadores.

Para los usuarios, este comportamiento del navegador es más seguro. Los desarrolladores de sitios y servicios web deben tener en cuenta que si aún necesitan recibir sus cookies cuando lo soliciten desde otros sitios, deberán establecer explícitamente sus atributos de cookies SameSite=None, Secure( Secureporque dicha solicitud, además, solo debe llegar al servidor a través de un canal seguro )

Dado que la innovación cambia el estándar actual y no todos los sitios podrán adaptarse rápidamente, la transición a un nuevo comportamiento ocurre gradualmente. Inicialmente, se activó para un número limitado de usuarios de Chrome beta, y ahora su número aumenta gradualmente. La información real está disponible aquí . La última entrada en el enlace:
Última actualización el 9 de marzo de 2020.

Hemos comenzado a aplicar el nuevo comportamiento para Chrome 80 estable, pero no para el 100% de los usuarios. El despliegue controlado es para una población inicial limitada,
Es decir, el período de prueba beta está retrasado, y los desarrolladores de Chrome han comenzado a incluir lentamente una nueva funcionalidad entre los usuarios comunes. Lo cual es bueno en principio, ya que es realmente más seguro.

Puede restaurar el comportamiento anterior a través de los ajustes : en la barra de direcciones de Chrome, introduzca chrome://flags, vaya a la página, encontrar el SameSite ser las cookies por defecto tema , y configurarlo para personas de movilidad reducida . Pero esto es más adecuado para las pruebas que para los usuarios comunes. Del mismo modo, si su Chrome 80 aún ejecuta el comportamiento anterior, puede forzar la nueva funcionalidad estableciendo la misma configuración en Habilitado .

Por lo tanto, si su sitio necesita recibir cookies cuando lo solicita desde diferentes dominios, esté preparado para los próximos cambios (y quien esté listo es bueno para eso). Bueno para todos!

Añadido por:
xdenserindicó en los comentarios que algunas versiones anteriores de los navegadores no son compatibles SameSite=None, no aceptan dichas cookies en absoluto o las procesan de una manera inusual. Entre ellos se encuentran los navegadores para computadoras de escritorio y dispositivos móviles. La página https://www.chromium.org/updates/same-site/incompatible-clients proporciona una lista de navegadores y una posible solución al problema (en pseudocódigo, pero bastante detallado). Los autores sugieren detectar versiones problemáticas de los navegadores por título useragent, y no configurar sus atributos de cookies SameSite=Noneen absoluto.

Agregado 2:
En relación con la situación con COVID-19, desde el 3 de abril de 2020, Google suspende temporalmente la implementación de los cambios descritos en el procesamiento de SameSite, para garantizar el buen funcionamiento de los servicios de Internet. En los dispositivos donde los cambios ya se aplican, se cancelarán.
(c) blog.chromium.org/2020/04/tempomporary-rolling-back-samesite.html

Fuentes:
web.dev/samesite-cookies-explained
www.chromium.org/updates/same-site
www.chromestatus.com/ feature / 5088147346030592
www.chromium.org/updates/same-site/incompatible-clients
blog.chromium.org/2020/04/tempomporary-rolling-back-samesite.html

All Articles