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:
- Solicite um token para sua origem.
- 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
- No seu HTML:
- 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?
- Solicitação do Mozilla para cargo: pendente
- Solicitação do Webkit para posição: sem sinal
- TAG W3C Solicitação de posição: satisfeita
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
- Como tornar seu site "isolado de origem cruzada" usando COOP e COEP
- Por que o "isolamento de origem cruzada" é necessário para recursos avançados
- Um guia para ativar o isolamento de origem cruzada
- Atualizações do SharedArrayBuffer no Android Chrome 88 e no Chrome 92 para computador
- Carregar recursos de origem cruzada sem cabeçalhos CORP usando
COEP: credentialless