A partir de Chrome 135, puedes usar el nuevo valor sandbox:allow-same-site-none-cookies. Cuando se especifica esta política y no hay cookies de terceros disponibles, el navegador solo enviará cookies de SameSite=None en las solicitudes HTTP que se originan en iframes de zona de pruebas propios.
¿Qué es un iframe en zona de pruebas?
Los iframes con zona de pruebas son iframes con restricciones especiales. Se consideran como si tuvieran un origen opaco null. De forma predeterminada, las funciones potencialmente dañinas, como los scripts, los formularios y las ventanas emergentes, no están disponibles en los iframes de zona de pruebas.
Usa el atributo sandbox para especificar qué funciones debe tener disponibles un iframe en zona de pruebas. Por ejemplo:
<iframe sandbox="allow-scripts" src="example-sandboxed-frame.html"/>
El aislamiento es siempre una buena idea, ya que te permite seleccionar de forma granular los permisos necesarios para que se cargue el contenido incorporado correctamente, a la vez que limita el alcance de posibles vulnerabilidades.
¿Por qué necesitamos esta política nueva?
Antes de la introducción de allow-same-site-none-cookies, podías configurar dos situaciones de cookies dentro de un iframe en zona de pruebas:
- Sin el token
allow-same-originen el atributosandbox, el origen del iframe se serializa comonull, lo que hace que todas las solicitudes de la página en zona de pruebas sean de varios sitios. En este caso, solo se incluirán en las solicitudes las cookies conSameSite=None. - Con el token
allow-same-originen el atributosandbox, las solicitudes se tratan como si se originaran en el origen real del iframe, lo que permite que se envíen cookies con cualquier valor deSameSite.
Con las cookies de terceros bloqueadas, un iframe en zona de pruebas que no tenga allow-same-origin
no puede enviar ninguna cookie, a menos que habilites allow-same-site-none-cookies.
Un iframe con allow-same-origin podrá incluir cookies en las solicitudes del mismo sitio, incluso cuando se bloqueen las cookies de terceros. Sin embargo, todo el almacenamiento de cookies del origen quedaría expuesto a una actividad web potencialmente maliciosa.
Con allow-same-site-none-cookies, un iframe puede enviar cookies SameSite=None en solicitudes HTTP, mientras que las cookies SameSite=Strict y SameSite=Lax potencialmente sensibles no se incluirán.
Ejemplo práctico
Considera un sitio, practice-coding.example, que permite a los usuarios crear y ejecutar proyectos de programación personalizados, y también incorporar el código de otros usuarios. Para usar el servicio, los usuarios deben acceder, lo que genera que se establezca una cookie de sesión SameSite=Strict.
Otro usuario crea un proyecto, practice-coding.example/cookie-theft, que otros usuarios pueden incorporar sin saberlo como iframe en sus proyectos. Si las cookies SameSite=Strict y SameSite=Lax se exponen al iframe practice-coding.example/cookie-theft, el usuario malicioso podría robar las cookies de sesión de otros usuarios.
En este caso, es posible que el propietario del sitio quiera restringir el acceso a las cookies potencialmente sensibles. Sin embargo, es posible que aún quieran permitir las cookies de SameSite=None dentro de los iframe en zona de pruebas. Por ejemplo, un iframe con zona de pruebas practice-coding.example/coding-interview podría requerir cookies SameSite=None para permitir que los candidatos vuelvan a visitar su código.
allow-same-site-none-cookies evita exponer todo el contenedor de cookies y, al mismo tiempo, permite de forma selectiva las cookies SameSite=None necesarias.
¿Cómo permito solo SameSite=None dentro de los marcos de zona de pruebas propios?
Para habilitar las cookies SameSite=None en las solicitudes de páginas de zona de pruebas propias, especifica el token allow-same-site-none-cookies en la etiqueta iframe. Por ejemplo:
<iframe sandbox="allow-same-site-none-cookies" src="example-sandboxed-page.html"/>
También puedes establecer una política de allow-same-site-none-cookies con un encabezado HTTP Content-Security-Policy:
Content-Security-Policy: sandbox allow-same-site-none-cookies;
Pruébalo con nuestra demostración.
Interactúa y comparte comentarios
Informa un problema para compartir comentarios o informar problemas, o bien únete a la discusión en GitHub.