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:
- 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:
- 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?
- Solicitação de posição da Mozilla: Pendente
- Solicitação de posição do Webkit: Sem sinal
- W3C TAG Solicitação de posição: satisfeito
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
- Como isolar seu site entre origens usando COOP e COEP
- Por que você precisa de "isolamento entre origens" para recursos avançados
- Um guia para ativar o isolamento de origem cruzada
- Atualizações do SharedArrayBuffer no Chrome 88 para Android e Chrome 92 para computador
- Carregar recursos entre origens sem cabeçalhos CORP usando
COEP: credentialless