← Todas as verificações
SegurançaSeveridade típica: Baixo

Scanner de Referrer-Policy fraca

Deteta uma Referrer-Policy permissiva que revela o URL completo do teu site a sites externos.

O que verifica

Este scanner deteta se o teu site tem uma Referrer-Policy permissiva que revela o URL completo a sites externos. Identifica quando o navegador envia endereços detalhados do teu site ao visitar ligações ou carregar recursos de terceiros.

Porque importa

O URL completo pode conter informação sensível, como identificadores de sessão, tokens ou caminhos privados, que não quererias partilhar com outros sites. Uma política permissiva faz esses dados viajarem para destinos externos sempre que um utilizador sai do teu site.

Como se corrige

Configura o cabeçalho Referrer-Policy com um valor mais restritivo, como strict-origin-when-cross-origin, que partilha apenas a origem e não o caminho completo com sites externos. Define-se na configuração do servidor ou do CDN e costuma ser uma mudança simples e segura.

Como funciona esta verificação

Esta verificação só atua se o teu site já envia o cabeçalho Referrer-Policy; se faltar por completo, assinala-o o scanner de cabeçalhos. O Scanaris lê o valor e, se contiver unsafe-url ou no-referrer-when-downgrade, abre um achado de severidade baixa com o valor exato. Qualquer outro valor (strict-origin-when-cross-origin, no-referrer, same-origin, origin, strict-origin) é dado por bom. Ou seja, não mede se tens o cabeçalho, mas se o que tens não deixa fugir o URL completo.

O que é o referer e o que foge

Sempre que um utilizador clica numa ligação para outro site, ou a tua página carrega uma imagem ou um script de outro domínio, o browser envia ao destino um cabeçalho Referer com o URL da página de onde vem. A política de referer decide quanto desse URL é enviado. Com unsafe-url, o URL completo, com caminho e parâmetros, mesmo que o destino seja HTTP. Com no-referrer-when-downgrade, o URL completo para qualquer destino HTTPS; era o comportamento por defeito dos browsers até 2020 e por isso continua em muitas configurações antigas. O que foge são coisas como /dashboard/faturas/8841, /reset-password?token=..., /pesquisar?q=despedimento ou o identificador de um documento partilhado: tudo o que estiver no URL do utilizador chega a redes de anúncios, a serviços de analítica e a qualquer site externo para onde ligues.

Como corrigir

O valor recomendado para quase qualquer site:

Referrer-Policy: strict-origin-when-cross-origin

Envia o URL completo dentro do teu próprio domínio (assim a tua analítica continua a funcionar), só a origem (https://teudominio.com) para outros domínios, e nada se o destino for HTTP. É o valor por defeito dos browsers modernos, por isso ao pô-lo explicitamente só estás a fixar o que já fazem. Se não precisas que ninguém saiba de onde vem o visitante, no-referrer é ainda mais estrito.

  • Nuxt: em routeRules do nuxt.config, na regra '/**'.
  • Next.js: na função headers() do next.config.js.
  • Vercel: no vercel.json. Netlify: no _headers.
  • nginx: add_header Referrer-Policy "strict-origin-when-cross-origin" always;. Apache: Header always set Referrer-Policy "strict-origin-when-cross-origin".
  • Express: helmet.referrerPolicy({ policy: 'strict-origin-when-cross-origin' }).

Se alguma ligação concreta precisar de outro comportamento (por exemplo um programa de afiliados que exige o referer completo), ajusta-o nessa ligação com o atributo referrerpolicy em vez de relaxar a política de todo o site.

Confirma que está corrigido

curl -sI https://teudominio.com | grep -i referrer-policy

Deve mostrar strict-origin-when-cross-origin ou no-referrer. Confirma também que não há uma etiqueta <meta name="referrer"> no HTML com um valor diferente: a meta tem prioridade sobre o cabeçalho nessa página.

Perguntas frequentes

Vou perder dados no Google Analytics ou na minha ferramenta de estatísticas?

Não. A analítica do teu próprio site alimenta-se do script que incluis, não do referer. O que muda é o que veem os sites para onde ligas: em vez da página exata verão o teu domínio. Para as tuas próprias páginas internas, o referer completo mantém-se.

O meu site não tem URLs com dados sensíveis.

Hoje. Uma ligação de repor palavra-passe, um identificador de encomenda ou um parâmetro de pesquisa aparecem assim que o site cresce. Fixar a política correta custa uma linha e não tem efeitos secundários.

Porque é que no-referrer-when-downgrade era o valor por defeito?

Porque nos primeiros anos da web o referer completo era considerado útil e o HTTPS era minoritário. O Chrome, o Firefox e o Safari mudaram o valor por defeito para strict-origin-when-cross-origin entre 2020 e 2021 precisamente pelas fugas que esta guia descreve. Todos os cabeçalhos relacionados explica-os cabeçalhos HTTP para humanos.

Verifica-o no teu site

Analisa o teu site grátis e vê se esta e outras 44 verificações passam, com um fix prompt por cada problema.

Analisar o meu site grátis

Do blog

Verificações relacionadas