Prueba de origen de iframe anónima: Incorpora fácilmente iframes en entornos COEP

Arthur Sonzogni
Arthur Sonzogni

Los desarrolladores que usan COEP ahora pueden incorporar iframes de terceros que no utilicen COEP ellos mismos.

Por qué necesitamos el programa 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 que se denomina aislamiento de origen cruzado, el cual, entre otros aspectos, requiere la implementación de 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 el COEP

Si bien el aislamiento de origen cruzado mejora la seguridad de las páginas web y la capacidad de habilitar funciones potentes, implementar COEP puede ser difícil. Uno de los desafíos más grandes es que todos los iframes de origen cruzado también deben implementar COEP y CORP. El navegador no cargará los iframes que no tengan esos encabezados.

Por lo general, los iframes los entrega un tercero para el que puede no ser fácil implementar COEP.

Iframe anónimo al rescate

Aquí es donde entra en juego el iframe anónimo. Si agregas el atributo anonymous al elemento <iframe>, el iframe se carga desde una partición de almacenamiento diferente y efímera, y ya no está sujeto a restricciones de 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 frasco de cookies vacío. Del mismo modo, las APIs de almacenamiento, como LocalStorage, CacheStorage, IndexedDB, etc., cargan y almacenan datos en la nueva partición efímera. El alcance de la partición se define según el documento de nivel superior actual y el origen del iframe. 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 COEP. Esto sigue siendo seguro, ya que siempre se cargan desde un nuevo contexto vacío. Se cargarán sin que se personalicen sus datos. Solo contienen datos públicos, que no son valiosos para el atacante.

Demostración

Puedes ver un iframe anónimo en https://anonymous-iframe.glitch.me/

Registrarse para una prueba de origen

Para garantizar que los iframes anónimos ayuden a los desarrolladores a adoptar el aislamiento de origen cruzado, los pondremos a disposición de las versiones 106 a 108 en Chrome como prueba de origen.

Regístrate en la prueba de origen para permitir que tu sitio web use iframes anónimos:

  1. Solicita un token para tu origen.
  2. Usa el token de una de las siguientes maneras:
    • En el archivo HTML: html <meta http-equiv="Origin-Trial" content="TOKEN_GOES_HERE">
    • En tu 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
  3. Agrega un iframe anónimo a tu página: html <iframe anonymous src="https://example.com">

Si tienes algún comentario sobre esta función, infórmalo en el repositorio de GitHub.

Prueba de origen de terceros

La prueba de origen también está disponible para secuencias de comandos de terceros. Significa que se puede habilitar mediante secuencias de comandos incorporadas en la página.

Obtén más información sobre cómo registrarte en una prueba de origen de terceros.

Preguntas frecuentes

¿Otros navegadores adoptarán esta función?

¿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 de todo el subárbol, incluso sin un atributo anonymous.

¿Las ventanas emergentes creadas a partir de <iframe anonymous> también son anónimas?

Las ventanas emergentes se abren como si se hubiera establecido noopener. Se crean a partir de un nuevo contexto de nivel superior regular y no son anónimos. No pueden comunicarse con el iframe anónimo.

Recursos