Os desenvolvedores que usam a COEP agora podem incorporar iframes de terceiros que não usam a COEP.
O iframe sem credenciais é ativado por padrão na versão 110 do Chrome. Ele resolve a reclamação mais comum dos desenvolvedores que trabalham com a política de incorporação de origem cruzada (COEP, na sigla em inglês): a incorporação de iframes de terceiros que não definem a 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 opção de ativação chamado isolamento de origem cruzada, que exige a implantação do COEP. O isolamento entre origens 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 entre origens, os sites precisam enviar os seguintes cabeçalhos HTTP:
Cross-Origin-Embedder-Policy: require-corp
Cross-Origin-Opener-Policy: same-origin
COEP:sem credenciais também pode ser usado como uma alternativa a require-corp
. Consulte a documentação para mais detalhes.
Desafios para ativar a 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 entre origens precisam implantar COEP e CORP. Os iframes sem esses cabeçalhos não serão carregados pelo navegador.
Iframe sem credenciais ao resgate
Estamos lançando 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 de 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, 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. A partição é delimitada pelo documento de nível superior atual e pela origem do iframe. Todo esse armazenamento é limpo quando o documento de nível superior é 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 carregados de um novo contexto vazio toda vez, eles não podem conter dados personalizados, que é o que os invasores procuram. Se um iframe tiver 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
- W3C TAG Solicitação de posição: satisfeito
Um <iframe>
está aninhado dentro de um <iframe credentialless>
sem credenciais?
Sim. Ele é herdado. Quando um iframe não tem credenciais, isso se aplica a todos os iframes no subárvore, mesmo sem um atributo credentialless
.
Os pop-ups criados com <iframe credentialless>
também não têm credenciais?
Os pop-ups são abertos como se noopener
estivesse definido. Eles são criados em um novo contexto de nível superior normal e não são sem credenciais. Eles não podem se comunicar com o iframe sem credenciais.
Como detectar se 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 é undefined
em um navegador da Web que não oferece suporte a <iframe credentialless>
.
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
- IFrame sem credenciais: segurança da Web | MDN (em inglês)