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

Jueves 16 de enero de 2020

Esta es una publicación cruzada del blog para desarrolladores de Chromium y se refiere específicamente a la manera en que los cambios en Chrome pueden afectar el funcionamiento de tu sitio web para los usuarios en el futuro.

En mayo, Chrome anunció un modelo de cookies seguro de forma predeterminada que depende de un nuevo sistema de clasificación de cookies (spec). Esta iniciativa forma parte de nuestras acciones continuas por mejorar la privacidad y la seguridad en la Web.

En febrero de 2020, Chrome planea implementar el modelo nuevo con Chrome 80. Mozilla y Microsoft también indicaron que tienen la intención de implementar el modelo nuevo en Firefox y Edge según sus propios cronogramas. Si bien aún faltan unos meses para los cambios de Chrome, es importante que los desarrolladores que administran cookies evalúen su preparación ahora. En esta entrada de blog, se describen conceptos generales; consulta Explicación de las cookies de SameSite en web.dev a fin de obtener orientación para desarrolladores.

Por lo general, los sitios web integran servicios externos para publicidad, recomendaciones de contenido, widgets de terceros, redes sociales y otras funciones. A medida que navegas por la Web, estos servicios externos pueden almacenar cookies en tu navegador y, posteriormente, acceder a estas para ofrecer experiencias personalizadas o medir la participación del público. Cada cookie tiene un dominio asociado. Si el dominio asociado a una cookie corresponde al de un servicio externo y no al del sitio web que aparece en la barra de direcciones del usuario, se considera un contexto entre sitios (o de "terceros").

Entre los casos de uso entre sitios menos evidentes, se incluyen las situaciones en las que una entidad que posee varios sitios web utiliza una cookie para realizar seguimiento entre esas propiedades. Si bien la misma entidad posee la cookie y los sitios web, de todos modos se habla de un contexto entre sitios o de "terceros" cuando el dominio de la cookie no coincide con los sitios desde los que se accede a esta.

El dominio del sitio no coincide con el 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 configura un contexto entre sitios o de "terceros".

Por el contrario, se configura un contexto de acceso a cookies desde el mismo sitio (o "propio") cuando el dominio de una cookie coincide con el del sitio web que aparece en la barra de direcciones del usuario. Las cookies de mismo sitio se suelen emplear para mantener abiertas las cuentas de los usuarios en sitios web particulares, recordar sus preferencias y posibilitar la generación de estadísticas del sitio.

El dominio del sitio coincide con el de la cookie

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

En la actualidad, si la intención es que solo se acceda a una cookie en un contexto propio, el desarrollador puede aplicar uno de dos parámetros de configuración (SameSite=Lax o SameSite=Strict) para evitar el acceso externo. Sin embargo, muy pocos desarrolladores siguen esta práctica recomendada, por lo que suelen quedar numerosas cookies de mismo sitio innecesariamente expuestas a amenazas, como ataques de falsificación de solicitudes entre sitios.

Para proteger más sitios web y a sus usuarios, el nuevo modelo seguro de forma predeterminada supone que todas las cookies deben protegerse del acceso externo, a menos que se especifique lo contrario. Los desarrolladores deben usar un nuevo parámetro de configuración de cookies, SameSite=None, a fin de designarlas para el acceso entre sitios. Cuando el atributo SameSite=None está presente, se debe usar un atributo Secure adicional para que solo se pueda acceder a las cookies entre sitios mediante conexiones HTTPS. Esto no mitigará todos los riesgos asociados al acceso entre sitios, pero brindará protección contra los ataques de red.

Además de los beneficios de seguridad inmediatos, la declaración explícita de cookies para seguimiento entre sitios permite una mayor transparencia y más opciones para el usuario. Por ejemplo, los navegadores podrían ofrecer a los usuarios controles específicos para administrar por separado las cookies a las que solo accede un sitio y aquellas a las que se accede desde varios sitios.

Aplicación forzosa en Chrome a partir de febrero de 2020

Desde la implementación de Chrome 80 en febrero, las cookies sin valor declarado para SameSite se tratarán como cookies SameSite=Lax. Solo las cookies configuradas como SameSite=None; Secure estarán disponibles para el acceso externo, siempre que se acceda a estas desde conexiones seguras. Las herramientas de seguimiento de estado de la plataforma de Chrome para SameSite=None y Secure seguirán actualizándose con la nueva información de lanzamiento.

Mozilla confirma que ofrecerá compatibilidad con el nuevo modelo de clasificación de cookies a través de su declaración de intención de implementar en Firefox los requisitos de SameSite=None; Secure correspondientes a las cookies para seguimiento entre sitios. Recientemente, Microsoft anunció que planea comenzar a implementar el modelo como experimento en Microsoft Edge 80.

Cómo prepararse; complejidades conocidas

Si administras cookies para seguimiento entre sitios, deberás aplicarles la configuración SameSite=None; Secure. La implementación debería ser sencilla para la mayoría de los desarrolladores, pero te recomendamos que comiences a realizar pruebas ahora a fin de identificar complejidades y casos especiales, como los siguientes:

  • Aún no todos los lenguajes y bibliotecas admiten el valor None, lo que requiere que los desarrolladores establezcan el encabezado de cookie directamente. En este repositorio de GitHub, se brindan instrucciones para implementar SameSite=None; Secure en una variedad de lenguajes, bibliotecas y frameworks.
  • Algunos navegadores, incluidas algunas versiones de Chrome, Safari y UC Browser, podrían interpretar el valor None de maneras no deseadas, por lo que los desarrolladores deberán incluir en el código excepciones para esos clientes. Se incluye en este escenario el componente WebView de Android basado en versiones anteriores de Chrome. En este enlace, encontrarás una lista de clientes incompatibles conocidos.
  • Se recomienda a los desarrolladores de apps que declaren los parámetros correctos de configuración de SameSite cookie para WebViews de Android en función de las versiones de Chrome compatibles con el valor None para las cookies a las que se accede tanto a través de encabezados HTTP(S) como a través de la API de CookieManager de WebView de Android, aunque el modelo nuevo no se aplicará en WebView de Android hasta más adelante.
  • Es posible que los administradores empresariales de TI necesiten implementar políticas especiales a fin de revertir temporalmente el navegador Chrome al comportamiento heredado si algunos servicios, como el inicio de sesión único o aplicaciones internas, no están preparados para el lanzamiento de febrero.
  • Si tienes cookies a las que accedes en un contexto propio y otro de terceros, procura usar cookies independientes para obtener los beneficios de seguridad de SameSite=Lax en el contexto propio.

En Explicación de las cookies de SameSite, se ofrece orientación específica para las situaciones que se mencionaron anteriormente, además de canales para informar problemas y hacer preguntas.

Para probar el efecto del nuevo comportamiento de Chrome en tu sitio o en las cookies que administras, dirígete a chrome://flags en Chrome 76 y versiones posteriores, y habilita los experimentos "SameSite by default cookies" y "Cookies without SameSite must be secure". Además, estos experimentos se habilitarán automáticamente para 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 experimentar problemas de incompatibilidad con servicios que aún no admiten el nuevo modelo. Para inhabilitar los experimentos de la versión beta, los usuarios pueden dirigirse a chrome://flags.

Si administras cookies a las que solo se accede en un contexto de mismo sitio (cookies de mismo sitio), no es necesario que realices ninguna acción. Chrome evitará automáticamente que entidades externas accedan a esas cookies, incluso si falta el atributo SameSite o si no se establece ningún valor. Sin embargo, te recomendamos que apliques un valor adecuado de SameSite (Lax o Strict) y que no delegues la protección de las cookies de mismo sitio en el navegador, ya que no todos los navegadores incluyen esa protección de forma predeterminada.

Por último, si te preocupa que los proveedores y en general quienes brindan servicios a tu sitio web no estén preparados para adoptar el nuevo modelo, puedes verificar las advertencias de la consola de herramientas para desarrolladores en Chrome 77 y versiones posteriores cuando una página contenga cookies para seguimiento entre sitios a las que les falte la configuración requerida:

Se estableció una cookie asociada a un recurso entre sitios en (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 comuniques con tus socios para confirmar que estén preparados para el cambio.