Evitando o Hot Link de imagens usando o Mod_rewrite

Está notando o uso de banda do seu blog/site crescer e não sabe o porque ?
Possivelmente, estão começando a fazer o famoso Hot Link de imagens do seu blog/site em outros locais.

Um jeito fácil de olhar isto, é através do log do seu blog. Você vai notar  várias requisições vindas de algum endereço em particular a imagens. 

187.39.61.204 - - [24/Mar/2011:17:52:42 -0700] "GET /files/arquivos/terrabiblica.jpg HTTP/1.1" 403 2365 "http://algumlugar.com/i/noticias/74/74177-apple-retira-aplicativo-para-iphone-ofensivo-aos-gays/index.html" "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.151 Safari/534.16"
189.122.147.118 - - [24/Mar/2011:17:56:12 -0700] "GET /files/arquivos/terrabiblica.jpg HTTP/1.1" 403 2365 "http://algumlugar.com/i/noticias/74/74177-apple-retira-aplicativo-para-iphone-ofensivo-aos-gays/index.html" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:2.0) Gecko/20100101 Firefox/4.0"
189.122.147.118 - - [24/Mar/2011:18:04:36 -0700] "GET /files/arquivos/terrabiblica.jpg HTTP/1.1" 403 2217 "http://algumlugar.com/i/noticias/74/74177-apple-retira-aplicativo-para-iphone-ofensivo-aos-gays/index.html" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:2.0) Gecko/20100101 Firefox/4.0" 

Hoje, eu tive um problema assim. Como meu plano na Dreamhost fornece é ilimitado em banda, eu acabei tirando estes filtros a um tempo atrás.
Só que aí veio o outro efeito. Muito Hot Link além da banda, gera mais acessos. E mais acessos, também consumo de CPU e afins.
Ou seja, no fim, eu hoje perdi um tempo fazendo o bloqueio do Hot Link de imagens. 

E como é feito isto ? O processo é todo feito utilizando o mod_rewrite do Apache.

Assim, todas as dicas aqui podem ser usadas no seu httpd.conf ou até no seu .htaccess do diretório root do seu domínio. 

O primeiro passo para fazer o "bloqueio" do Hot Link no seu dominio, pode ser feito assim ( adicione no seu .htaccess ou httpd.conf , respectivamente ) : 

SetEnvIfNoCase Referer "^http://www\.ataliba\.eti\.br/" banimages=1
SetEnvIfNoCase Referer "^http://ataliba\.eti\.br/" banimages=1
SetEnvIfNoCase Referer "^$" banimages=1
<FilesMatch "\.(gif|png|jpe?g)$">
Order Allow,Deny
Allow from env=banimages=1
</FilesMatch>

Ou então, você pode usar este código aqui :

RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?ataliba.eti.br/.*$ [NC]
RewriteRule ^.*\.(bmp|tif|gif|jpg|jpeg|jpe|png)$ - [F] 

Para redirecionar a pessoa para uma imagem qualquer que você queira, é só utilizar a série abaixo: 

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?ataliba\.eti\.br/.*$ [NC]
RewriteRule .*\.(gif|jpe?g|png)$ https://cybernetus.com/chato.jpg [R,NC,L] 

O grande problema de  fazer assim, é que você vai bloquear inclusive o Google e o Feedburner caso você os use, então use alguns condicionais para resolver este problema: 

RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(.+\.)?ataliba\.eti\.br/ [NC] [OR]
RewriteCond %{HTTP_REFERER} !^http://(.+\.)?ataliba\.net/ [NC] [OR]
RewriteCond %{HTTP_REFERER} !^http://(.+\.)?google.com(.+.)?/ [NC] [OR] RewriteCond %{HTTP_REFERER} !^http://(.+\.)?feeedburner.com(.+.)?/ [NC]
RewriteRule .*\.(bmp|tif|gif|jpg|jpeg|jpe|png)$ - [F]


No exemplo acima, se as requisições vieram do site ataliba.net , ataliba.eti.br, google.com ou feedburner.com, o Hot Link das imagens será aceito :-) 

Resumo, com isto, você se livra daqueles infelizes que ficam roubando sua banda e ainda, aumentando a carga no seu servidor, simplesmente porque não querem fazer o upload de uma imagem  :-) 

Após estas configurações, se quiser testar se elas estão funcionando, clique aqui. Este site fornece um testador se sua imagem pode ser mostrada ou não, através do hot link. 

comments powered by Disqus