Receba isolamento de origem cruzada e proteção contra vazamentos entre sites ao interagir com pop-ups.
Um novo valor para
a Política de abertura entre origens (COOP, na sigla em inglês)
está disponível: restrict-properties. Ele oferece benefícios de segurança e facilita a adoção do isolamento de origem cruzada, permitindo que seu site interaja com pop-ups de terceiros para pagamentos, autenticação ou outros casos de uso.
Para começar a testar restrict-properties, participe do teste de origem que começa no Chrome 116.
Por que usar restrict-properties
restrict-properties tem dois casos de uso principais:
- Prevenir vazamentos entre sites sem interrupções.
- Tornar seu site isolado de origem cruzada.
Prevenir vazamentos entre sites sem interrupções
Por padrão, qualquer site pode abrir seu aplicativo em um pop-up e receber uma referência a ele.
Um site malicioso pode usar isso para realizar ataques, como
vazamentos entre sites.
Para mitigar esse risco, use o cabeçalho Cross-Origin-Opener-Policy (COOP).
Até agora, suas opções para Cross-Origin-Opener-Policy eram limitadas. Você poderia:
- Definir
same-origin,que bloqueia todas as interações de origem cruzada com pop-ups. - Definir
same-origin-allow-popups, que bloqueia todas as interações de origem cruzada que abrem seu site em um pop-up. - Definir
unsafe-none, que permite todas as interações de origem cruzada com pop-ups.
Isso impossibilitou que sites que precisam ser abertos em um pop-up e interagir com o abridor aplicassem a COOP. Isso deixou casos de uso importantes, como o login único e os pagamentos, desprotegidos contra vazamentos entre sites.
Cross-Origin-Opener-Policy: restrict-properties resolve esse problema.
Com restrict-properties, as propriedades que podem ser usadas para contagem de frames e outros ataques de vazamento entre sites não estão disponíveis, mas a comunicação básica entre janelas via postMessage e closed é permitida.
Isso melhora a segurança de um site, mantendo os principais casos de uso. Por exemplo:
- Se você fornecer um serviço em um pop-up, definir
Cross-Origin-Opener-Policy: restrict-propertiesvai proteger você contra uma série de ataques de vazamento entre sites. Você ainda pode abrir todas as páginas que podia antes. - Se você precisar acessar um pop-up de origem cruzada, definir
Cross-Origin-Opener-Policy: restrict-propertiesvai proteger seu site da contagem de iframes. Você poderá abrir o mesmo conjunto de pop-ups que pode abrir hoje. - Se o abridor e o aberto definirem o cabeçalho e as páginas forem de origem cruzada, o comportamento será semelhante ao de um deles que definiu o cabeçalho. Se eles forem da mesma origem, o acesso total será concedido.
Tornar seu site isolado de origem cruzada
Por que precisamos de isolamento de origem cruzada
Algumas APIs da Web aumentam o risco de ataques de canal lateral, como Spectre. Para mitigar esse risco, os navegadores oferecem um ambiente isolado baseado em ativação chamado isolamento de origem cruzada. Com um estado isolado de origem cruzada, a página da Web pode usar recursos privilegiados, incluindo SharedArrayBuffer, performance.measureUserAgentSpecificMemory() e timers de alta precisão com melhor resolução, ao mesmo tempo em que isola a origem de outras, a menos que elas sejam ativadas.
Até agora, para usar essas APIs, você precisava definir Cross-Origin-Opener-Policy:
same-origin. No entanto, isso interromperia qualquer fluxo de pop-up de origem cruzada de que você possa precisar, como logon único e pagamentos.
Cross-Origin-Opener-Policy: restrict-properties agora pode ser usado em vez de Cross-Origin-Opener-Policy: same-origin para ativar o isolamento de origem cruzada.
Em vez de interromper o relacionamento do abridor, ele apenas o restringe ao subconjunto de comunicação mínima de window.postMessage() e window.closed.
Você poderá ativar o isolamento de origem cruzada com os dois cabeçalhos a seguir:
Cross-Origin-Opener-Policy: restrict-properties
Cross-Origin-Embedder-Policy: require-corp
ou
Cross-Origin-Opener-Policy: restrict-properties
Cross-Origin-Embedder-Policy: credentialless
Saiba mais sobre credentialless em
Carregar recursos de origem cruzada sem cabeçalhos CORP usando COEP: credentialless.
Demonstração
Teste várias opções de cabeçalho nesta demonstração de isolamento de origem cruzada.
Teste o teste de origem
Para testar Cross-Origin-Opener-Policy: restrict-properties, participe do
teste de
origem.
Suporte ao navegador
Cross-Origin-Opener-Policy: restrict-properties atualmente só é compatível com o Chrome. Outros navegadores estão
ativamente envolvidos na discussão sobre a padronização.
Perguntas frequentes
Meu site precisa se comunicar com pop-ups da mesma origem. Devo usar COOP: restrict-properties para ativar o isolamento de origem cruzada?
Definir COOP: restrict-properties no pop-up e na página principal não causa restrições. Definir apenas no pop-up ou apenas na página principal vai impedir qualquer acesso a propriedades que não sejam postMessage e closed no abridor, mesmo que sejam da mesma origem.
O conjunto de propriedades permitidas é fixo?
Com base no feedback até agora, window.postMessage e window.closed são suspeitos de serem suficientes para a maioria dos fluxos de trabalho, mas ainda estamos considerando abrir para outras propriedades. Se você tiver um caso de uso que não possa
ser resolvido usando apenas postMessage e closed, deixe seu feedback
na thread de intenção de teste.
Recursos
- Como tornar seu site "com isolamento de origem cruzada" usando COOP e COEP
- Por que você precisa de "isolamento de origem cruzada" para recursos avançados
- Um guia para ativar o isolamento de origem cruzada
- Atualizações do SharedArrayBuffer no Android Chrome 88 e no Chrome para computador 92
- Carregar recursos de origem cruzada sem cabeçalhos CORP usando
COEP: credentialless(link em inglês) – Chrome Developers - Teste de origem de iframe anônimo: incorpore iframes facilmente em ambientes COEP (link em inglês) - Chrome Developers