Os desenvolvedores que usam o COEP agora podem incorporar iframes de terceiros que não usam o COEP.
O iframe sem credencial é ativado por padrão na versão 110 do Chrome. Ela resolve as reclamações mais comuns que os desenvolvedores que trabalham com o Cross-Origin-Embedder-Policy (COEP) têm: a incorporação de iframes de terceiros que não definem o COEP.
Por que precisamos do 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 permissão de ativação chamado isolamento de origem cruzada, que exige a implantação do COEP. O isolamento de origem cruzada permite que os sites usem recursos privilegiados, como 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 seguintes cabeçalhos HTTP:
Cross-Origin-Embedder-Policy: require-corp
Cross-Origin-Opener-Policy: same-origin
A alternativa COEP:credentialless (em inglês) também pode ser usada como alternativa à require-corp
. Consulte a documentação para saber mais detalhes.
Desafios da ativação do COEP
Embora o isolamento de origem cruzada melhore a segurança das páginas da Web e ative recursos avançados, a implantação do COEP pode ser difícil. Um dos maiores desafios é que todos os iframes de origem cruzada precisam implantar o COEP e o CORP. Iframes sem esses cabeçalhos não serão carregados pelo navegador.
Iframe sem credenciais ao resgate
Lançamos o <iframe credentialless>
para ajudar a incorporar iframes de terceiros que não definem o COEP. Ao adicionar o atributo credentialless
ao elemento <iframe>
, o iframe é carregado de um contexto diferente e vazio. Em particular, ele é carregado sem cookies. Isso permite remover a restrição do COEP.
Exemplo:
<iframe credentialless src="https://example.com">
Esse iframe é criado em um novo contexto temporário e não tem acesso a nenhum dos cookies associados ao site de nível superior. Em vez disso, ele começa com um pote de biscoitos vazio. Da mesma forma, APIs de armazenamento como LocalStorage, CacheStorage, IndexedDB e assim por diante carregam e armazenam dados na nova partição temporária. O escopo da partição é tanto o documento de nível superior atual quanto a origem do iframe. Todo esse armazenamento será apagado assim que o documento de nível superior for descarregado.
Os iframes sem credenciais não estão sujeitos às regras de incorporação do COEP. Eles ainda são seguros: como são sempre carregados de um novo contexto vazio, eles não devem conter dados personalizados, que é o que os atacantes procuram. Se um iframe contiver apenas dados públicos, ele não será valioso para um invasor.
Demonstração
Confira uma demonstração de um iframe sem credenciais.
Perguntas frequentes
Esse recurso será adotado por outros navegadores?
- Solicitação de posição do Mozilla: Pendente
- Solicitação de posição do Webkit: sem sinal
- TAG DO W3C Solicitação de posição: satisfeita
Um <iframe>
está aninhado dentro de um <iframe credentialless>
sem credenciais?
Sim. Ele é herdado. Quando um iframe não tem credencial, ele é aplicado a todos os iframes em toda a subárvore, mesmo sem um atributo credentialless
.
Os pop-ups criados no <iframe credentialless>
também não têm credenciais?
Os pop-ups são abertos como se a noopener
estivesse definida. Eles são criados em um novo contexto regular de nível superior e não são sem credenciais. Ele não consegue se comunicar com o iframe sem credenciais.
Como detectar que o documento foi incorporado em um iframe sem credenciais?
window.credentialless
é verdadeiro dentro de um iframe sem credenciais e falso caso contrário. O valor dela é undefined
em um navegador da Web incompatível com <iframe credentialless>
.
Recursos
- Como tornar seu site "isolado de origem cruzada" usando COOP e COEP
- Por que você precisa de "isolamento de origem cruzada" para ter recursos avançados
- Um guia para ativar o isolamento de origem cruzada
- Atualizações do SharedArrayBuffer no Android 88 e no Chrome 92 para computadores
- Carregar recursos de diferentes origens sem cabeçalhos CORP usando
COEP: credentialless
- IFrame sem credenciais - Segurança na Web | MDN