Teste de origem do iframe anônimo: incorpore facilmente iframes em ambientes COEP

Arthur Sonzogni
Arthur Sonzogni

Os desenvolvedores que usam a COEP agora podem incorporar iframes de terceiros que não usam a COEP.

Por que precisamos da COEP

Algumas APIs da Web aumentam o risco de ataques de canal lateral, como o Spectre. Para mitigar esse risco, os navegadores oferecem um ambiente isolado baseado em aceitação chamado isolamento de origem cruzada, que, entre outras coisas, requer a implantação do COEP. Isso permite que os sites usem recursos privilegiados, incluindo SharedArrayBuffer, performance.measureUserAgentSpecificMemory() e cronômetros de alta precisão com melhor resolução.

Para ativar o isolamento entre origens, os sites precisam enviar os dois cabeçalhos HTTP abaixo:

Cross-Origin-Embedder-Policy: require-corp
Cross-Origin-Opener-Policy: same-origin

Desafios da ativação do COEP

Embora o isolamento entre origens ofereça mais segurança às páginas da Web e a capacidade de ativar recursos poderosos, a implantação do COEP pode ser difícil. Um dos maiores desafios é que todos os iframes de origem cruzada também precisam implantar COEP e CORP. Os iframes sem esses cabeçalhos não serão carregados pelo navegador.

Os iframes geralmente são exibidos por terceiros para os quais pode não ser fácil implantar o COEP.

Iframe anônimo para ajudar

É aí que entra o iframe anônimo. Ao adicionar o atributo anonymous ao elemento <iframe>, o iframe é carregado de uma partição de armazenamento efémera diferente e não está mais sujeito a restrições de COEP.

Exemplo:

<iframe anonymous src="https://example.com">

O iframe é criado em um novo contexto temporário e não tem acesso a nenhum dos cookies associados ao site de nível superior. Ele começa com um pote de biscoitos vazio. Da mesma forma, APIs de armazenamento, como LocalStorage, CacheStorage, IndexedDB e assim por diante, estão carregando e armazenando dados na nova partição temporária. O escopo da partição é o documento de nível superior atual e a origem do iframe. O armazenamento será apagado quando o documento de nível superior for removido.

Iframes anônimos não estão sujeitos às regras de incorporação COEP. Isso ainda é seguro, porque eles são sempre carregados de um novo contexto vazio. Eles serão carregados sem que os dados sejam personalizados. Eles contêm apenas dados públicos, que não são valiosos para um invasor.

Demonstração

Confira um iframe anônimo em: https://anonymous-iframe.glitch.me/

Fazer inscrição em um teste de origem

Para garantir que os iframes anônimos ajudem os desenvolvedores a adotar o isolamento entre origens, estamos disponibilizando-os no Chrome da versão 106 à 108 como um teste de origem.

Inscreva-se no teste de origem para permitir que seu site use iframes anônimos:

  1. Solicite um token para sua origem.
  2. Use o token de uma das seguintes maneiras:
    • No seu HTML: html <meta http-equiv="Origin-Trial" content="TOKEN_GOES_HERE">
    • No seu JavaScript: js const meta = document.createElement('meta'); meta.httpEquiv = 'Origin-Trial'; meta.content = 'TOKEN_GOES_HERE'; document.head.append(meta);
    • Nos cabeçalhos HTTP: text Origin-Trial: TOKEN_GOES_HERE
  3. Adicione um iframe anônimo à sua página: html <iframe anonymous src="https://example.com">

Se você tiver feedback sobre esse recurso, registre um problema no repositório do GitHub.

Teste de origem de terceiros

O teste de origem também está disponível para scripts de terceiros. Isso significa que ele pode ser ativado por scripts incorporados na página.

Saiba mais sobre como se inscrever para um teste de origem de terceiros.

Perguntas frequentes

Esse recurso será adotado por outros navegadores?

Os iframes aninhados dentro de <iframe anonymous> são anônimos?

Sim. É herdado. Quando um iframe é anônimo, isso se aplica a todos os iframes em todo o subárvore, mesmo sem um atributo anonymous.

Os pop-ups criados com <iframe anonymous> também são anônimos?

Os pop-ups são abertos como se noopener estivesse definido. Elas são criadas com um novo contexto regular de nível superior e não são anônimas. Eles não podem se comunicar com o iframe anônimo.

Recursos