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

Arthur sonzogni
Arthur Sonzogni

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

Por que precisamos da COEP

Algumas APIs da Web aumentam o risco de ataques de canal lateral, como o Spectre. Para reduzir esse risco, os navegadores oferecem um ambiente isolado com base na permissão chamado isolamento de origem cruzada, que, entre outras coisas, exige a implantação do COEP. Isso permite que os sites usem recursos privilegiados, incluindo SharedArrayBuffer, performance.measureUserAgentSpecificMemory() e timers de alta precisão com melhor resolução.

Para ativar o isolamento de origem cruzada, os sites precisam enviar os dois cabeçalhos HTTP a seguir:

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

Desafios ao ativar a COEP

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

Os iframes geralmente são veiculados por terceiros para quem pode não ser fácil implantar o COEP.

Iframe anônimo ao resgate

É aí que entra o iframe anônimo. Ao adicionar o atributo anonymous ao elemento <iframe>, o iframe é carregado de uma partição de armazenamento temporário diferente e não está mais sujeito às 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. Começa com um pote de biscoito 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 tem como escopo o documento de nível superior atual e a origem do iframe. O armazenamento será apagado quando o documento de nível superior for descarregado.

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

Demonstração

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

Registrar-se em um teste de origem

Para garantir que os iframes anônimos estejam ajudando os desenvolvedores a adotar o isolamento de origem cruzada, eles estão disponíveis no Chrome da versão 106 para a 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. Adicionar um iframe anônimo à sua página: html <iframe anonymous src="https://example.com">

Se você tiver algum feedback sobre esse recurso, registre um problema no repositório do GitHub (link em inglês).

Teste de origem de terceiros

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

Saiba mais sobre como se registrar em um teste de origem de terceiros.

Perguntas frequentes

Esse recurso será usado por outros navegadores?

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

Sim. Ela é herdada. Quando um iframe é anônimo, ele se aplica a todos os iframes em toda a subárvore, mesmo sem um atributo anonymous.

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

Os pop-ups são abertos como se a noopener estivesse definida. Elas são criadas com base em um novo contexto normal de nível superior e não são anônimas. Eles não conseguem se comunicar com o iframe anônimo.

Recursos