toscho.design

Hotlinking falsch und richtig beantworten

Da es gerade die Runde macht – siehe Martin Mißfeldts Beitrag über Vebidoo – will ich mal kurz zeigen, wie man das sogenannte Hotlinking erschwert, das direkte Einbetten der eigenen Bilder auf unerwünschten Seiten also.

Das funktioniert normalerweise per .htaccess, httpd.conf oder wie auch immer die jeweilige Konfigurationsdatei des Webservers heißt.

Falsch

Im ersten Anlauf – und leider auch in vielen Anleitungen, die man findet, möchte man vielleicht nur Zugriffe von der eigenen Seite zulassen:

# Nicht meine Seite
RewriteCond %{HTTP_REFERER} !toscho\.de
# Kein direkter Zugriff auf die Datei
RewriteCond %{REQUEST_URI} !/hotlink\.gif
# Ersatzbild ausgeben
RewriteRule .*\.(png|jpg|gif|svg|bmp)$ /hotlink.gif [L]

Das ist Unfug. Denn jetzt kann man keine Bilder mehr im Newsreader sehen, in Übersetzungstools wie Google Translate … oder in Browsern, die keinen Referer senden oder über einen Proxy gehen (müssen), der ihn ausfiltert.

Richtig

Wir brauchen eine Blacklist, einen Liste verbotener Domains also, und nur Zugriffe von dort behandeln wir gesondert.

Bei mir sieht das derzeit so aus:

RewriteCond %{HTTP_REFERER} ioff\.de [NC,OR]
RewriteCond %{HTTP_REFERER} tutorialsblogs\.com [NC,OR]
RewriteCond %{HTTP_REFERER} ringrocker\.com     [NC,OR]
RewriteCond %{HTTP_REFERER} freeblueprints\.net [NC,OR]
RewriteCond %{HTTP_REFERER} vebidoo\.de
RewriteCond %{REQUEST_URI} !/rb\.gif
RewriteRule .*\.(png|jpg|gif|svg|bmp)$ /rb.gif [L]

Bei der RewriteRule ist das nackte [L] am Ende wichtig: So sieht derjenige, der das Bild eingebunden hat, zunächst noch das richtige Bild aus seinem Cache. Da seine Besucher aber etwas anderes sehen, darf er dann ein wenig Zeit in … interessante Diskussionen investieren.

Das rb.gif ist ein recht schwer zu ertragendes animiertes GIF, das ihr gerne selbst verwenden dürft. Auf eurem Server natürlich. :)

Fremdverwerter findet man am besten bei der Logfile-Analyse. Als Krücke mag auch die Google-Bildersuche dienen: Gibt man hier ein: inurl:http://toscho.de -site:toscho.de, so findet man einige dieser Seiten.

Siehe auch: Ungebetene Gäste mit .htaccess blocken.

4 Kommentare

  1. Kaiser am 25.08.2012 · 19:27

    Tip am Rande: noch schlimmer sind Bilder, die in Komplementärfarben flackern. Da setzt das Auge noch früher aus.

  2. Ralf Albert am 25.08.2012 · 21:24

    Das erste ist eine Whitelist (mit einem Eintrag), das zweite eine Blacklist. Der generelle Nachteil an Listen, egal ob Black- oder Whitelist, man muss sie pflegen.

    Wenn man viele Webseiten betreut, würde es sich wohl anbieten die Listen zentral zu pflegen. Dazu könnte man sich eine zentrale Liste anlegen, z.B. als Text-Datei die von WP per Cronjob geprüft wird. Wurde die Liste aktualisiert, werden auch die Einträge in der .htaccess aktualisiert.
    Aber auch wenn man nur ein Blog betreut, lohnt es sich wohl im Backend eine Options-Seite zur Pflege der verbotenen Domains anzulegen.

    Richtig effektiv wird die Geschichte dann, wenn nicht eine einzelne, zentrale Liste, ausgewertet wird. Sondern wenn viele Webseitenbetreiber ihre Listen pflegen und die Ergebnisse zusammengeführt werden.

  3. Marc am 13.09.2012 · 23:41

    Hi,
    danke für den Tipp. In letzter Zeit nimmt es teilweise do sehr zu mit den Bildern, die dann auch noch teilweise die eigene Seite ausranken. Werde zwar nicht übel-flackernde Bilder ausliefern, sondern ... ach das übel hat schon gepasst :)

    Vielen Dank für die Hilfe

  4. Chris am 18.10.2012 · 23:05

    Man kann übrigens auch Bilder bei Fremdhostern weiterleiten ;) Ich habe jemandem, der Bilder unter CC-BY-NC bei Ebay in einer Auktion gehotlinkt hat, einen Penis aus der Wikipedia mit entsprechendem Kommentar im Bild umgeleitet. ;-) Was denkt ihr, wie schnell die Auktion weg war...