Hoe kan ik hotlinken op mijn server tegengaan?

Trefwoorden: htaccess, anti, hotlink, leech, afschermen, hotlinken, hot linking, bandbreedte
Elke webmaster die een website beheert welke nog maar een beetje populair is, maakt het vroeg of laat wel mee: iemand anders neemt de afbeeldingen van zijn site over zonder er op voorhand ook maar één vraag te stellen. Niet zo erg op het eerste zicht, zeker niet als je de afbeeldingen vrij downloadbaar maakt. De situatie kan echter wel escaleren wanneer mensen de afbeeldingen op grote schaal verwerken in andere websites, zonder de foto op een eigen webspace op te slaan. Het verbruik van bandbreedte kan zo van de ene op de andere dag serieus stijgen, evenredig met de daaraan verbonden kosten. Het (al dan niet geautomatiseerd) aanpassen van de bestandsnamen van je afbeeldingen is een mogelijkheid...

Als je op zoek bent naar een andere manier om je bezoekers (al dan niet vriendelijk) te wijzen op het feit dat je het niet echt op prijs stelt dat je afbeeldingen gehotlinkt worden.

Hier heb je alvast een beetje voorgekauwde code welke je in een bestand .htaccess kan plakken:

Opmerking

In de code zal je meerdere keren HTTP_REFERER. Verbeter deze fout niet. De correcte term zou normaal referrer moeten zijn, maar dat is hier niet het geval...


CODE
  1. RewriteEngine On
  2. RewriteCond %{HTTP_REFERER} !^http://(www\.)?multidesk\.be/ [NC]
  3. RewriteCond %{HTTP_REFERER} !^$
  4. RewriteRule \.(jpe?g|gif|bmp|png)$ - [F]
  5.  
  6.  


Dat was de code, nu datzelfde in't Nederlands

Nudat je de code reeds hebt kunnen bekijken, gaan we ze regel per regel ontleden.

CODE
  1. RewriteEngine On

Hier gebeurt eigenlijk net wat er staat: we vertellen de webserver dat we url's heel snel willen herschrijven, veranderen, redirecten dus.

CODE
  1. RewriteCond %{HTTP_REFERER} !^http://(www\.)?multidesk\.be/ [NC]


Hier gaan we zien ofdat de referrer geldig is, enkel wij (multidesk.be) mogen naar de afbeeldingen linken.

CODE
  1. RewriteCond %{HTTP_REFERER} !^$


Het doel van deze regel is hetzelfde als deze hier boven, enkel gaat het hier over een bezoeker die geen referrer heeft, zogenaamde Blank referrers.

CODE
  1. RewriteRule \.(jpe?g|gif|bmp|png)$ - [F]


Hier gebeurt het eigenlijke herwerken, we zoeken of mensen bestanden met de extensies jpg*, gif, bmp of png willen opvragen en indien dit gebeurt, tonen we ze de standaard foutboodschap (403 forbidden).

CODE
  1.  
  2.  


Misschien beetje vreemde regel, er staat toch niets? Nee, dit is geen fout; op het einde van je .htaccess moet je een witregel zetten. Deze lege regel (of liever het ontbreken ervan) is meermaals een bron van ellende geweest voor een webmaster die zijn code nite werkend kreeg. Onder het motto een gewaarschuwd man (of vrouw) is er twee waard... ;-)

We want more?(bounce)

Als je er nog een schepje bovenop wil doen en je bezoekers een (aangepaste) afbeelding of pagina wil tonen in de plaats, kan je volgende code gebruiken:.
CODE
  1. RewriteEngine On
  2. RewriteCond %{HTTP_REFERER} !^http://(www\.)?multidesk\.be/ [NC]
  3. RewriteCond %{HTTP_REFERER} !^$
  4. RewriteRule \.(jpe?g|gif|bmp|png)$ images/antilink.html [R,NC]
  5.  
  6.  


De bezoeker kan doorgelinkt worden naar een pagina die hem de melding geeft dat hij probeert een bestand te downloaden waarvan de webmaster het hem verbiedt. Je kan de pagina ook laten doorlinken naar een afbeelding die een soortgelijke boodschap bevat. Let hier echter wel bij op dat je hier geen afbeelding opgeeft die binnen het 'anti-hotlink' domein ligt. Doe je dit wel, dan zal de server in een oneindige loop terecht komen.

Je kan in het bovenstaande voorbeeld ook best een afbeelding gebruiken, in plaats van (bijvoorbeeld) een html-bestand. Indien deze code dan toch niet de afbeelding toont, kijk dan eerst en vooral na of het pad naar de afbeelding klopt; nog beter is gewoon het volledige adres naar de afbeelding (dus http://www.example.com/map1/submap2/afbeelding.ext) op te geven ;).

Maar wat als ik nu een website wel wil toelaten?

Stel je hebt een tweede homepage waarvan je hotlinking wil toelaten(om server space te sparen bijvoorbeeld). Je voert gewoon een tweede regel in die de domeinnaam van de website bevat.

Bijvoorbeeld:

CODE
  1. RewriteEngine On
  2. RewriteCond %{HTTP_REFERER} !^http://(www\.)?multidesk.be(/)?.*$ [NC]
  3. RewriteCond %{HTTP_REFERER} !^http://(www.)?mijnhomepage.be(/)?.*$ [NC]
  4. RewriteCond %{HTTP_REFERER} !^$
  5. RewriteRule \.(jpe?g|gif|bmp|png)$ images/antilink.html [R,NC]
  6.  
  7.  


Stilaan verslaafd aan't raken?

Stel je hebt er niets op tegen dat kleine websites, met weinig bezoekers en dus minder traffiek, je afbeeldingen hotlinken, maar je haat echt die ene site die het keer op keer doet, dan kan je onderstaande code eens proberen.

CODE
  1. RewriteEngine On
  2. RewriteCond %{HTTP_REFERER} ^http://(www\.)?eenwebsite\.com/ [NC,OR]
  3. RewriteCond %{HTTP_REFERER} ^http://(www\.)?nogeenwebsite\.be/ [NC]
  4. RewriteRule \.(jpe?g|gif|bmp|png)$ images/antilink.html [R,NC]
  5.  
  6.  


De eigenlijke code die voor het gewenste effect zorgt, bevindt zich op lijn 2 en 3, meer bepaald:

CODE
  1. RewriteCond %{HTTP_REFERER} ^http://(www\.)?eenwebsite\.com/ [NC,OR]
  2. RewriteCond %{HTTP_REFERER} ^http://(www\.)?nogeenwebsite\.be/ [NC]


Werkt het nog niet?
Als je de code maar niet aan het draaien krijgt, let er dan op dat je een regeleinde onderaan de file zet(lege regel dus). Het is geweten dat dit wel vaker dergelijke problemen oplost.
Kijk ook eens na ofdat je url's in de code kloppen.
Voeg hetvolgende eens aan je code toe (boven het hotlink gedeelte)
CODE
  1. +FollowSymlinks

Laat deze laatste optie eens weg en/of delete ook de regel die RewriteEngine on bevat.
Nog steeds problemen? Stel je vraag eens op een van onze forums, 'k ben der zeker van dat je een antwoord gaat krijgen. ;-)

De enige voorwaarde om dit script te doen werken, buiten alle andere die standaard nodig zijn als je htaccess wil gebruiken, is dat je host mod_rewrite moet ondersteunen. ;-)Dit artikel werd geschreven door Martijn op dinsdag 20 april 2004 om 19:31 en werd sindsdien 11208 keer gelezen.

  • Pagina
  • 1 van 1

Geen reacties gevonden
Er werden nog geen reacties bij dit artikel geplaatst.
  • Indien je denkt iets te kunnen toevoegen aan het artikel, kan je zelf een reactie schrijven via de koppeling Plaats een reactie bij dit artikel hieronder.
  • Indien je andere commentaar (iets wat niet meteen functioneel bijdraagt aan het artikel zelf) hebt, kan je een bedankje formuleren via de koppeling Plaats een bedankje bij dit artikel hieronder.