22/01/2024
Quando sites externos utilizam suas imagens diretamente, isso é conhecido como hotlinking. Essa prática pode ser prejudicial, pois consome recursos do seu servidor e pode aumentar os custos de hospedagem.
Neste artigo veremos uma solução eficaz para resolver este problema, não apenas impedindo o hotlinking de imagens, como de quaisquer outros arquivos do seu site.
Para iniciar, acesse a pasta de imagens do seu site e crie um arquivo com o nome .htaccess
e adicione o seguinte conteúdo, substituindo seudominio.com
pelo domínio do seu site:
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^https://(www\.)?seudominio\.com [NC]
RewriteRule \.(jpg|jpeg|png|gif|webp|avif|css|js|mp4|avi|mov)$ - [NC,F,L]
Este código agora bloqueia não só imagens (incluindo formatos modernos como WEBP e AVIF), mas também arquivos CSS, JavaScript e vídeos comuns (MP4, AVI, MOV), se eles forem acessados de domínios que não sejam o seu ou sem um referer.
O cabeçalho HTTP Content-Security-Policy
ajuda a prevenir certos tipos de ataques, incluindo o hotlinking. Ao configurá-lo no .htaccess, você instrui os navegadores a restringir como os recursos podem ser carregados no site:
<FilesMatch "\.(jpg|jpeg|png|gif|webp|avif|css|js|mp4|avi|mov)$">
Header set Content-Security-Policy "default-src 'self' https://seudominio.com https://www.seudominio.com"
</FilesMatch>
No código acima, substitua seudominio.com
pelo domínio do seu site.
Para sites hospedados em servidores Windows que usam IIS, o arquivo web.config
é o equivalente ao .htaccess
em servidores Apache. Para prevenir o hotlinking, você precisará adicionar regras específicas no web.config, conforme abaixo:
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="Prevent Hotlinking">
<match url=".*\.(jpg|jpeg|png|gif|webp|avif|css|js|mp4|avi|mov)$" />
<conditions>
<add input="{HTTP_REFERER}" pattern="^$" />
<add input="{HTTP_REFERER}" pattern="^https://(www\.)?seudominio\.com" negate="true" />
</conditions>
<action type="CustomResponse" statusCode="403" statusReason="Forbidden" statusDescription="Access is forbidden." />
</rule>
</rules>
</rewrite>
<httpProtocol>
<customHeaders>
<add name="Content-Security-Policy" value="default-src 'self' https://seudominio.com https://www.seudominio.com" />
</customHeaders>
</httpProtocol>
</system.webServer>
</configuration>
Neste código, você deve substituir seudominio.com
pelo domínio do seu site.
Essas técnicas simples garantem que apenas seu domínio possa utilizar seus recursos de mídia, mantendo a segurança e a eficiência do seu site. Lembre-se de testar suas configurações para assegurar seu funcionamento adequado.