Los desarrolladores que usan el COEP ahora pueden incorporar iframes de terceros que no usan el COEP.
Por qué necesitamos la COEP
Algunas APIs web aumentan el riesgo de ataques de canal lateral, como Spectre. Para mitigar ese riesgo, los navegadores ofrecen un entorno aislado basado en la habilitación voluntaria llamado aislamiento de origen cruzado, que, entre otras cosas, requiere la implementación de la COEP. Esto permite que los sitios web usen funciones privilegiadas, como SharedArrayBuffer
, performance.measureUserAgentSpecificMemory()
y temporizadores de alta precisión con mejor resolución.
Para habilitar el aislamiento de origen cruzado, los sitios web deben enviar los siguientes dos encabezados HTTP:
Cross-Origin-Embedder-Policy: require-corp
Cross-Origin-Opener-Policy: same-origin
Desafíos para habilitar la COEP
Si bien el aislamiento de origen cruzado proporciona a las páginas web una mayor seguridad y la capacidad de habilitar funciones potentes, la implementación de COEP puede ser difícil. Uno de los mayores desafíos es que todos los iframes de origen cruzado también deben implementar COEP y CORP. El navegador no cargará los iframes sin esos encabezados.
Por lo general, un tercero publica los iframes, para quien puede no ser fácil implementar la COEP.
El iframe anónimo al rescate
Aquí es donde entra en juego el iframe anónimo. Cuando se agrega el atributo anonymous
al elemento <iframe>
, el iframe se carga desde una partición de almacenamiento efímera diferente y ya no está sujeto a las restricciones de la COEP.
Ejemplo:
<iframe anonymous src="https://example.com">
Iframe se crea en un nuevo contexto efímero y no tiene acceso a ninguna de las cookies asociadas con el sitio web de nivel superior. Comienza desde un vaso de galletas vacío. Del mismo modo, las APIs de almacenamiento, como LocalStorage
, CacheStorage
, IndexedDB
, etcétera, cargan y almacenan datos en la nueva partición efímera. El alcance de la partición se limita al documento de nivel superior y al origen del iframe actuales. El almacenamiento se borrará una vez que se descargue el documento de nivel superior.
Los iframes anónimos no están sujetos a las reglas de incorporación de COEP. Esto sigue siendo seguro, ya que se cargan desde un contexto vacío nuevo cada vez. Se cargarán sin que se personalicen sus datos. Solo contienen datos públicos, que no son valiosos para el atacante.
Demostración
Puedes consultar un iframe anónimo en https://anonymous-iframe.glitch.me/.
Regístrate para obtener una prueba de origen
Para garantizar que los iframes anónimos ayuden a los desarrolladores a adoptar el aislamiento de origen cruzado, los ponemos a disposición en Chrome desde la versión 106 a la 108 como una prueba de origen.
Regístrate en la prueba de origen para permitir que tu sitio web use iframes anónimos:
- Solicita un token para tu origen.
- Usa el token de una de las siguientes maneras:
- En tu código HTML:
html <meta http-equiv="Origin-Trial" content="TOKEN_GOES_HERE">
- En tu código JavaScript:
js const meta = document.createElement('meta'); meta.httpEquiv = 'Origin-Trial'; meta.content = 'TOKEN_GOES_HERE'; document.head.append(meta);
- En los encabezados HTTP:
text Origin-Trial: TOKEN_GOES_HERE
- En tu código HTML:
- Agrega un iframe anónimo a tu página:
html <iframe anonymous src="https://example.com">
Si tienes comentarios sobre esta función, informa un problema en el repositorio de GitHub.
Prueba de origen de terceros
La prueba de origen también está disponible para secuencias de comandos de terceros. Esto significa que se puede habilitar con secuencias de comandos incorporadas en la página.
Obtén más información para registrarte en una prueba de origen de terceros.
Preguntas frecuentes
¿Otros navegadores adoptarán esta función?
- Solicitud de posición de Mozilla: Pendiente
- Solicitud de Webkit para la posición: Sin señal
- W3C TAG Solicitud de puesto: satisfecho
¿Los iframes anidados dentro de <iframe anonymous>
son anónimos?
Sí. Se hereda. Una vez que un iframe es anónimo, esto se aplica a todos los iframes del subárbol completo, incluso sin un atributo anonymous
.
¿Las ventanas emergentes creadas desde <iframe anonymous>
también son anónimas?
Las ventanas emergentes se abren como si se hubiera configurado noopener
. Se crean a partir de un nuevo contexto de nivel superior normal y no son anónimos. No pueden comunicarse con el iframe anónimo.
Recursos
- Cómo hacer que tu sitio web sea "aislado de varios orígenes" con COOP y COEP
- Por qué necesitas "aislamiento de origen cruzado" para funciones potentes
- Guía para habilitar el aislamiento de origen cruzado
- Actualizaciones de SharedArrayBuffer en Chrome 88 para Android y Chrome 92 para computadoras
- Carga recursos de origen cruzado sin encabezados CORP con
COEP: credentialless