Defaults.Exposed

Defaults.ExposedCorreções › Cabeçalhos de isolamento cross-origin (COOP / CORP / COEP)

Como corrigir Cabeçalhos de isolamento cross-origin (COOP / CORP / COEP)

Três instruções opcionais para o navegador que controlam como outros sites podem interagir com o seu — abri-lo em janelas pop-up, incorporar as suas imagens e scripts, ou puxar os seus recursos para as próprias páginas. São endurecimento moderno, não um requisito básico, e na nossa pontuação são informativos: a sua ausência não baixa a sua nota. Mas os dois que são seguros fecham uma falha discreta de phishing e de roubo de largura de banda, e a equipa de TI de um comprador cuidadoso reparará quando estiverem presentes.

O essencial para o seu negócio: Dois destes três cabeçalhos travam phishing sofisticado por pop-up e impedem outros sites de fazerem hotlinking das suas imagens e scripts (o que lhe custa largura de banda e pode expor dados). São gratuitos, ocupam um programador cerca de 15 minutos e não partem nada. O terceiro é avançado e pode partir análise de dados, fontes e incorporações — a maioria das empresas deve deixá-lo desligado. Nenhum deles afeta a sua nota, por isso trate-os como acabamento, não como pânico: faça os dois seguros, salte o arriscado a menos que precise mesmo dele.

Quanto isto lhe pode custar

Por que importa. Estes são cabeçalhos de endurecimento do navegador virados para o futuro. Na nossa metodologia, os três são informativos — estão registados com zero pontos e nunca movem a sua nota — porque são controlos avançados sem os quais um site pode legitimamente operar, e um deles pode causar dano se for mal aplicado. Reportamo-los para que veja onde está. Os dois seguros (COOP e CORP) valem genuinamente a pena adicionar: gratuitos, rápidos, e fecham falhas reais de phishing por pop-up e de roubo de recursos sem partir nada.

O que são estes, em palavras simples

Quando alguém visita o seu site, o navegador não carrega apenas as suas páginas isoladamente — também decide como outros sites podem interagir com o seu. Pode outro site abrir o seu numa pop-up e manter o controlo dela? Pode outro site alcançar e incorporar as suas imagens e scripts nas próprias páginas? Pode o seu próprio site usar com segurança certas funcionalidades de navegador poderosas e bloqueadas?

Estes três cabeçalhos são instruções curtas e invisíveis que o seu site envia ao navegador de cada visitante para responder exatamente a essas perguntas. São conhecidos pelas iniciais:

Dois deles (COOP e CORP) são seguros de adicionar e genuinamente úteis. O terceiro (COEP) é avançado e pode partir coisas se ligado sem cuidado.

O mais importante a saber à partida: na nossa pontuação, os três são informativos. Não afetam a sua nota. Um em falta não lhe custa nada. Reportamo-los para que veja onde está e arrume as vitórias fáceis — não para que entre em pânico por causa de um número.

O que isto lhe pode custar

São riscos de nicho, não os de primeira página — mas são reais, e as correções são gratuitas.

O que cada um é, na realidade

COOP — Cross-Origin-Opener-Policy (seguro, recomendado)

Quando outro site abre o seu usando uma pop-up ou window.open, as duas janelas podem normalmente manter uma referência uma à outra. Esse elo pode ser abusado: quem abriu pode manipular ou redirecionar a sua janela, ler fragmentos do seu URL e encenar phishing convincente usando o seu domínio real. O COOP: same-origin quebra essa relação — a sua janela fica isolada de tudo o que a abriu de outra origem. A navegação normal, as suas próprias ligações internas e a navegação comum não são de todo afetadas.

O que é «bom»: Cross-Origin-Opener-Policy: same-origin.

CORP — Cross-Origin-Resource-Policy (seguro, recomendado)

Por omissão, as suas imagens, scripts e outros ficheiros podem ser incorporados por qualquer site, em qualquer lado. O CORP: same-origin diz aos navegadores para recusarem a incorporação cross-origin dos seus recursos — para que outros sites não possam fazer hotlinking dos seus recursos nem puxá-los para as páginas deles. O seu próprio site continua a carregar os seus recursos exatamente como antes; só os sites externos são bloqueados.

O que é «bom»: Cross-Origin-Resource-Policy: same-origin. (Se publicar intencionalmente recursos para outros incorporarem — um logótipo público, uma API aberta — o seu programador pode relaxar isto nessas respostas específicas.)

COEP — Cross-Origin-Embedder-Policy (avançado, normalmente deixar desligado)

O COEP completa o «isolamento cross-origin»: combinado com o COOP, exige que cada recurso que a sua página carrega opte explicitamente por participar (via CORS ou CORP). Bem feito, isto desbloqueia certas funcionalidades de navegador poderosas (como o SharedArrayBuffer) e acrescenta outra camada contra ataques da classe Spectre. Mas, como exige a participação de tudo o que carrega, parte facilmente ferramentas de terceiros — análise de dados, fontes, widgets incorporados — que não foram construídas para participar. A maioria dos sites não precisa das funcionalidades que ele desbloqueia e não deve carregar o risco de quebra.

O que é «bom»: para o site raro que dele precisa, Cross-Origin-Embedder-Policy: credentialless — o valor mais seguro, com menor probabilidade de partir recursos externos do que o require-corp. Para todos os outros, ausente está bem, e o nosso relatório não o penalizará por isso.

Como corrigir (gratuito, ~15 minutos)

Entregue isto ao seu responsável de TI ou programador web — a correção é gratuita. Adicionar o COOP e o CORP são umas definições de uma linha no seu servidor ou CDN; não há licença nem custo contínuo. A única instrução para o proprietário é: faça os dois seguros e não ative o COEP sem testar.

São cabeçalhos de resposta, definidos onde as respostas do seu site são produzidas — o mais fácil é na sua CDN (p. ex. Cloudflare) se tiver uma, caso contrário na configuração do seu servidor web.

Os dois cabeçalhos seguros (recomendados para todos)

Cloudflare — Rules → Transform Rules → Modify Response Headers → Set:

Nginx:

add_header Cross-Origin-Opener-Policy   "same-origin" always;
add_header Cross-Origin-Resource-Policy "same-origin" always;

Apache:

Header always set Cross-Origin-Opener-Policy   "same-origin"
Header always set Cross-Origin-Resource-Policy "same-origin"

Estes são seguros de adicionar e não partem a funcionalidade normal. Depois de implementar, recarregue algumas páginas e confirme que o site se comporta exatamente como antes (deve).

O cabeçalho avançado (só se precisar mesmo dele)

Não o ligue sem testar primeiro em ambiente de teste. O COEP pode partir a análise de dados, as fontes e os widgets incorporados.

Cloudflare: Transform Rules → Set Cross-Origin-Embedder-Policy = credentialless.

Nginx:

add_header Cross-Origin-Embedder-Policy "credentialless" always;

Use credentialless em vez de require-corp — tem menor probabilidade de partir recursos externos. Teste exaustivamente em ambiente de teste; vigie qualquer script, fonte ou incorporação de terceiros que deixe de carregar. Se algo partir e não precisar mesmo das funcionalidades que o COEP desbloqueia, basta remover o cabeçalho — não há penalização por não o ter.

Notas por plataforma

Erros comuns

Uma nota sobre a nota

Para ser completamente claro: nenhuma destas três verificações afeta a sua nota. Estão registadas na nossa metodologia como informativas, com zero pontos, e uma em falta nunca lhe custa nada. Trazemo-las à tona porque os dois seguros são melhorias baratas e genuínas e porque ver o quadro completo é útil — não porque haja um número a defender. Se não fizer nada aqui, a sua nota é exatamente a mesma. Se adicionar o COOP e o CORP, fechou um par de falhas reais (ainda que de nicho) de graça. É essa a forma certa de pensar nesta página: acabamento opcional, com uma armadilha claramente assinalada a evitar.

Perguntas frequentes

Estes não afetam a minha nota — devo dar-me ao trabalho?

Dois deles, sim; um, provavelmente não. O COOP e o CORP são gratuitos, demoram minutos e não partem o seu site — fecham caminhos de ataque reais (ainda que de nicho), por isso valem a pena como higiene barata. O COEP é avançado e pode partir ferramentas de terceiros, por isso a maioria das empresas deve deixá-lo desligado, a menos que precise mesmo das funcionalidades de navegador que ele desbloqueia. Nenhum dos três muda a sua pontuação, por isso não há urgência — trate os dois seguros como uma arrumação para a próxima vez que o programador estiver no site.

Não percebo de tecnologia — isto é algo que tenho de tratar?

Não pessoalmente, e não com urgência. Como são informativos, nada de mau acontece à sua nota se os saltar. Se quiser adicionar os dois seguros, entregue a secção «Como corrigir» a quem gere o seu site ou CDN — são umas definições de uma linha e a correção é gratuita. O único a sinalizar explicitamente é o COEP: diga-lhes para não o ligarem sem testar, porque pode partir a análise de dados e os widgets incorporados.

Qual é a diferença entre estes e os cabeçalhos que AFETAM a minha nota?

Os cabeçalhos de segurança web pontuados — redirecionamento para HTTPS, HSTS, Content-Security-Policy, proteção contra clickjacking (X-Frame-Options) e proteção contra MIME-sniffing — defendem contra ataques comuns e amplamente explorados, por isso a sua ausência custa pontos. Os três desta página (COOP, CORP, COEP) são controlos de isolamento de navegador mais recentes e especializados. São boa prática mas ainda não uma expectativa de base, por isso reportamo-los sem os pontuar. Faça primeiro os pontuados; estes são o acabamento por cima.

Adicionar COOP ou CORP vai partir o meu site ou as integrações dos meus parceiros?

As definições recomendadas (ambas «same-origin») são concebidas para serem seguras. O COOP só corta o elo às janelas que o seu site abre em pop-ups — a navegação normal, as suas próprias páginas e as ligações comuns não são afetadas. O CORP só impede *outros* sites de incorporarem as suas imagens e scripts; o seu próprio site carrega os seus recursos exatamente como antes. Se realmente servir recursos (como um logótipo público ou uma API) que outros sites devam incorporar, o seu programador pode usar uma definição mais permissiva nessas respostas específicas. O que arrisca mesmo quebras é o COEP — mantenha esse desligado a menos que testado.

Quanto me custa, na verdade, o «hotlinking»?

Quando outro site incorpora a sua imagem ou script diretamente do seu servidor em vez de alojar a própria cópia, cada visitante da página dele descarrega-a de si — na sua conta de largura de banda, e a mostrar o seu recurso num contexto que não aprovou. Para uma pequena empresa raramente é catastrófico, mas é dinheiro a sair pela porta, e o CORP («same-origin») trava-o ao nível do navegador. Também fecha um caminho subtil de fuga de dados de que dependem ataques de navegador avançados (da classe Spectre).

O que é «bom» para cada um destes?

COOP: um cabeçalho Cross-Origin-Opener-Policy definido como «same-origin». CORP: um cabeçalho Cross-Origin-Resource-Policy definido como «same-origin». COEP: um cabeçalho Cross-Origin-Embedder-Policy — e, se o definir de todo, «credentialless» é o valor mais seguro do que «require-corp». O nosso relatório limita-se a registar se cada um está presente e como está definido; nunca o penaliza por um em falta. Procure ter COOP e CORP presentes; deixe o COEP ausente a menos que o tenha testado.