Como proteger suas imagens contra hotlinking?

O hotlinking — ou ligação inline — ocorre quando um site de terceiros apresenta as suas imagens ligando diretamente os seus URLs a partir do seu servidor. O resultado: o site deles consome a sua largura de banda, esgota a sua quota de transferência e sobrecarrega o seu servidor, sem que obtenha qualquer benefício. Em 2026, o hotlinking continua a ser um dos abusos mais comuns na web. Aqui estão todos os métodos para se proteger eficazmente.

Compreender o hotlinking e as suas consequências

Quando um site incorpora uma imagem através de uma etiqueta <img src="https://seudominio.com/foto.jpg"> nas suas próprias páginas, é o seu servidor que responde a cada carregamento da página deles. Na prática:

  • A sua largura de banda é consumida para alimentar um site de terceiros
  • A sua quota mensal de transferência esgota-se mais rapidamente
  • O seu servidor suporta carga adicional a cada visita ao site infrator
  • Paga o alojamento de imagens que servem para enriquecer o conteúdo de outros sites

Em casos extremos, um site muito visitado que faz hotlink das suas imagens pode provocar uma sobrecarga do servidor ou um excesso de quota que torna o seu próprio site inacessível.

Método 1: bloquear o hotlinking via .htaccess (Apache)

Este é o método mais clássico e eficaz em servidores Apache. O ficheiro .htaccess permite verificar o cabeçalho HTTP Referer de cada pedido — se o pedido não provém do seu domínio, é bloqueado ou redireccionado.

Adicione estas linhas no seu ficheiro .htaccess na raiz do seu site:

RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^https?://(www.)?seudominio.com [NC]
RewriteRule .(jpg|jpeg|png|gif|webp|svg|avif)$ - [F,L]

Esta regra bloqueia qualquer pedido de imagem cujo Referer não seja o seu domínio. Pode substituir [F,L] (erro 403) por um redirecionamento para uma imagem de aviso:

RewriteRule .(jpg|jpeg|png|gif|webp|svg|avif)$ https://seudominio.com/no-hotlink.png [R,L]
Bom saber: a condição RewriteCond %{HTTP_REFERER} !^$ autoriza os pedidos sem Referer (acesso direto, marcadores, ferramentas de desenvolvimento). Se também quiser bloqueá-los, remova esta linha — mas saiba que isso pode impedir que as suas imagens sejam apresentadas em alguns contextos legítimos como e-mails HTML ou agregadores RSS.

Método 2: bloquear o hotlinking via Nginx

Num servidor Nginx, a proteção é configurada no bloco server ou location do seu ficheiro de configuração:

location ~* .(jpg|jpeg|png|gif|webp|svg|avif)$ {
  valid_referers none blocked seudominio.com *.seudominio.com;
  if ($invalid_referer) {
    return 403;
  }
}

A diretiva valid_referers none blocked autoriza os acessos diretos (none) e os pedidos sem Referer (blocked). Apenas os domínios listados podem incorporar as suas imagens.

Método 3: usar a política Referrer-Policy

A diretiva HTTP Referrer-Policy controla que informações de Referer são enviadas com os pedidos do seu site. Ao configurar uma política restritiva, reduz as informações disponíveis para sites de terceiros — mas este método não protege ativamente as suas imagens, apenas limita a propagação do URL do seu site.

Para uma proteção básica, adicione ao seu .htaccess:

Header set Referrer-Policy "same-origin"

Método 4: proteção via CDN

Se aloja as suas imagens através de um CDN (Cloudflare, AWS CloudFront, Fastly…), a proteção contra hotlinking está geralmente disponível de forma nativa no painel de administração:

  • Cloudflare: ative a regra "Hotlink Protection" no separador Scrape Shield do seu painel. Bloqueia automaticamente os pedidos de imagens provenientes de domínios não autorizados
  • AWS CloudFront: utilize uma função Lambda@Edge para verificar o cabeçalho Referer e bloquear pedidos não autorizados
  • Bunny CDN: a proteção hotlinking está disponível diretamente nas definições da zona de armazenamento

A vantagem do CDN é dupla: a proteção é gerida ao nível da rede de distribuição, antes mesmo de chegar ao seu servidor de origem, e aplica-se a todos os seus assets sem modificar a configuração do servidor.

Método 5: renomear e mover as suas imagens periodicamente

Uma abordagem menos técnica mas complementar consiste em alterar periodicamente os URLs das suas imagens. Qualquer ligação direta externa fica imediatamente inválida. Esta abordagem pode ser automatizada através de um script de renomeação ou gestão de assets com hash de conteúdo (como fazem o Webpack ou o Vite de forma nativa para ficheiros CSS e JS).

Método 6: usar tokens de acesso temporários

Para imagens sensíveis ou de elevado tráfego, a geração de URLs assinados com expiração é a proteção mais robusta. O princípio: cada URL de imagem contém um token criptográfico válido por uma duração limitada (1h, 24h…). Após este prazo, o URL deixa de ser válido.

  • AWS S3: geração de Presigned URLs através do SDK AWS
  • Cloudflare R2: URLs assinados com expiração configurável
  • Bunny CDN: assinatura de URL com chave secreta e timestamp
MétodoDificuldadeEficáciaCompatível com CDN
.htaccess (Apache)FácilBoaParcial
Configuração NginxIntermédiaBoaParcial
CDN nativo (Cloudflare…)Muito fácilMuito boaSim (nativa)
Renomeação periódicaVariávelMédiaSim
URLs assinados / tokensAvançadaMáximaSim
Bom saber: nenhuma proteção anti-hotlinking é absolutamente infalível. Um site determinado pode sempre descarregar as suas imagens e re-alojá-las nos seus próprios servidores — nesse caso torna-se uma questão de direitos de autor, não de hotlinking. A proteção via .htaccess ou CDN cobre a grande maioria dos casos abusivos e é suficiente para proteger a sua largura de banda no dia a dia.