A partir de Chrome 135, puedes usar el nuevo valor sandbox
: allow-same-site-none-cookies
. Cuando se especifica esta política y no están disponibles las cookies de terceros, el navegador solo enviará cookies SameSite=None
en solicitudes HTTP que provengan de iframes en zona de pruebas propios.
¿Qué es un iframe en zona de pruebas?
Los iframes en zona de pruebas son iframes con restricciones especiales. Se consideran que tienen un origen null
, opaco. De forma predeterminada, las funciones potencialmente dañinas, como las secuencias de comandos, 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 disponible un iframe en la zona de pruebas. Por ejemplo:
<iframe sandbox="allow-scripts" src="example-sandboxed-frame.html"/>
El entorno de pruebas siempre es una buena idea, ya que te permite seleccionar de forma detallada los permisos necesarios para que el contenido incorporado se cargue correctamente y, al mismo tiempo, limita el alcance de los posibles exploits.
¿Por qué necesitamos esta nueva política?
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-origin
en el atributosandbox
, el origen del iframe se serializa comonull
, lo que hace que todas las solicitudes de la página en la zona de pruebas sean multisitio. En este caso, solo se incluirán las cookies conSameSite=None
en las solicitudes. - Con el token
allow-same-origin
en el atributosandbox
, las solicitudes se consideran que provienen del 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 tiene 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 contenedor de cookies del origen estaría expuesto a actividad web potencialmente maliciosa.
Con allow-same-site-none-cookies
, un iframe puede enviar cookies SameSite=None
en solicitudes HTTP, mientras que no se incluirán las cookies SameSite=Strict
y SameSite=Lax
potencialmente sensibles.
Ejemplo práctico
Considera un sitio, practice-coding.example
, que permite a los usuarios crear y ejecutar proyectos de codificación personalizados, además de incorporar el código de otros usuarios. Para usar el servicio, los usuarios deben acceder, lo que hace 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 un iframe en sus proyectos. Si las cookies SameSite=Strict
y SameSite=Lax
están expuestas 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 desee restringir el acceso a las cookies potencialmente sensibles. Sin embargo, es posible que deseen permitir las cookies de SameSite=None
dentro de iframes en zona de pruebas. Por ejemplo, el iframe en zona de pruebas de practice-coding.example/coding-interview
podría requerir cookies de SameSite=None
para permitir que los candidatos revisen 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 puedo permitir solo SameSite=None
dentro de los marcos de zona de pruebas propios?
Para habilitar las cookies SameSite=None
en las solicitudes de páginas propias en zona de pruebas, especifica el token allow-same-site-none-cookies
en la etiqueta de iframe. Por ejemplo:
<iframe sandbox="allow-same-site-none-cookies" src="example-sandboxed-page.html"/>
También puedes establecer una política 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 únete a la discusión en GitHub.