Bilderklau (Leeching) verhindern

  • Autor: GrayGhost

    Bilderklau (Leeching) verhindern
    Schlüsselworte:
    bilder, bilderklau, leeching, verlinkung, hot link, deep link, bilder schutz, bilder schützen, links verbieten, traffic diebstahl, hotlink

    Hey! Das gehört mir!!!

    Viele Webseitenbetreiber sind sich der Problematik des sogenannten "hotlinkings" bewußt. Diese "hotlinkers" werden im Fachjargon auch "Leechers" genannt. Das sind, einfach ausgedrückt "Traffic-Diebe" die Bilder anderer Webseiten in ihre eigenen Seiten per Link einfügen.

    All jenen, die keine Transferbeschränkung haben und nicht den Transfer per Gigabyte abrechnen müssen, könnte das ja egal sein. Für andere Sites kann dieses aber schon zum Ärgernis werden. Ganz abgesehen von der Tatsache, dass die eigenen Bilder auf anderen Webseiten dargestellt werden und die gewünschten Besucher auf der eigenen Seite ausbleiben, kann der Traffic bei einer Bildergalerie schnell ausufern, wenn die "hotlinkende" Seite viele Besucher hat. Nimm nur mal ein 100kbyte großes Bild welches auf einer Seite präsentiert wird, welches 1000 hits pro Tag hat. Da kommen schon 100 Mbyte zusammen, die du bezahlen musst ohne das nur ein Besucher auf deiner Seite war.

    Wer also mit einer Traffic-Limitierung bei seinem Providor einen Vertrag hat, läuft Gefahr durch das hotlinking richtig zur Kasse gebeten zu werden.

    Es gibt eine Reihe von Problemlösungen um das hotlinking zu unterbinden, aber fast alle haben auch negative Nebeneffeke.

    Schnelle Lösungen sind nicht immer perfekt

    Eine gängige Praxis ist, den Server anzuweisen alle Anfragen zurückzuweisen, bei denen der HTTP Referrer des Headers entweder nicht von deiner eigenen Seite stammt, oder wo der Referrer im Header fehlt. Damit können die User deine Bilder nur dann sehen, wenn sie deine Bilder auch über deine Seite aufrufen, oder wenn sie es schaffen, den Referrer zu unterdrücken (was eine Reihe von Sicherheitstools heutzutage auch schafft).

    Ein zweiter Ansatz das Problem zu lösen ist, den Traffic der nicht zu deiner Seite gehört, umzuleiten, die z.B. den Surfer mit einer Seite empfängt, die ihn darüber informiert, dass das "hotlinking" nicht erwünscht ist. Das wäre die freundliche Art, du kannst dir natürlich auch etwas wesentlich drastischeres ausdenken.

    Diese Methode hat aber auch seine Nachteile, da reguläre Links nicht mehr möglich sind. Jeder Browser sendet einen Referrer wenn jemand auf einen Link zu einem deiner Bilder klickt. Nun bist du in einer Zwickmühle. Einerseits möchtest du vielleicht einen Link du einem Bild zulassen (da darüber die Leute deine Webseite besuchen), andererseits möchtest du aber unterbinden, dass deine Bilder über einen hotlink direkt in andere Seiten eingebaut werden.

    Ich werde dir eine Möglichkeit bieten, auch Seiten die Möglichkeit zu geben auf deine Bilder zu verlinken, wenn du es ausdrücklich erlaubst und die Verlinkung wird deine Seite öffnen. Damit hast du den Vorteil, dass die Links als Hits für deine Seite gewertet werden.

    Was wollen wir also erreichen?

    Mit PHP und "mod_rewrite", kannst du das Einbetten verbieten und gleichzeitig das Verlinken für alle erlauben, die Direktlinks für Bilderseiten erstellen, wie z.B. Google mit deren Bildersuche. Die hier vorgestellte Lösung fasst das Beste aller Möglichkeiten zusammen, und hier kommt jetzt die Lösung:

    Alles was du brauchst ist ein Apache Server, der PHP unterstützt und die Option mod_rewrite aktiviert hat. Falls du dir über deine Servermöglichkeiten nicht im klaren bist, dann kontaktiere deinen Provider. Du kannst die PHP Konfiguration aber auch selber abfragen:

    Für die Ermittlung der aktuellen PHP Version und Konfiguration reicht ein kleines Script. Schreibe die folgenen Zeilen in einen Text Editor.



    Speicher die Datei und benenne sie in phpinfo.php um. Dann lade diese Datei in das Stammverzeichnis deiner Home Page. Aufrufen kannst du nun die PHP Informationen über deinen Browser, indem du die phpinfo.php über die Adresszeile aufrufst:

    http://www.deinedomain.de/phpinfo.php

    Schau im Abschnitt "apache" in die Rubrik "Loaded Modules". Hier muss mod_rewrite in der Liste stehen. Wenn nicht, dann bitte deinen Providor dieses Modul freizugeben.

    Zunächt erstellst du eine Datei die du z.B. showpic.php nennst. In diese kopierst du den folgenden PHP Code:



    Natürlich brauche ich dir nicht sagen, dass du die blau markierte Zeile anpassen musst. Die rote Angabe musst du so lassen wie sie ist. Das Datum soll in der Vergangenheit liegen.

    Lasst uns nun mal einen Blick auf den oben stehenden PHP Code werfen. Die erste Zeile stellt sicher, dass der "Content-Type", der an den Browser gesendet wird, das Dokument als ein HTML Dokument identifiziert. Nach weiteren header Angaben folgt eine Abfrage ob die Variable $pic an das Script übergeben wurde. Ist dies nicht der Fall, so wird zum Ende gesprungen und abgebrochen.

    Wie dem auch sei, da dieses Script niemals ohne diese Variable aufgerufen wird, ist dieser Eintrag nicht von grosser Bedeutung. Du kannst das oben angegebene Script nun schon mal testen.

    Kopiere das Script in einen Texteditor, passe die blaue Zeile an und benenne die Datei wie folgt um: showpic.php
    Ich nehme nun mal an, dass in deiner Server Root ein Bild mit Namen MeinBild.jpg liegt. Wenn du nun in die Adresszeile deines Browsers folgendes eingibst:

    Code
    http://www.deinedomain.de/showpic.php?pic=MeinBild.jpg


    dann sollte der Browser das Bild anzeigen, unter dem steht: Dies Bild gehört zur Webseite deinedomain.de Du kannst es mal auf meiner HP ausprobieren. Ich habe das Script direkt in die Root gelegt in der sich auch das Bild "floh.jpg" befindet. Der Testaufruf sieht folgendermaßenaus:

    http://www.eddys-domain.de/showpic.php?pic=floh.jpg

    Nun wirds interessant :)

    Ich gehe an dieser Stelle mal davon aus, dass du mit der Erstellung von .htaccess Dateien und der Implementierung auf einer Webseite vertraut bist.

    Kopiere die folgenden Anweisungen in ein Textfile und lade es als .htaccess File auf deine Homepage:

    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} .*jpg$|.*gif$|.*png$ [NC]
    RewriteCond %{HTTP_REFERER} !^$
    RewriteCond %{HTTP_REFERER} !deineseite\.de [NC]
    RewriteCond %{HTTP_REFERER} !partnerseite\.com [NC]
    RewriteCond %{HTTP_REFERER} !google\. [NC]
    RewriteCond %{HTTP_REFERER} !search\?q=cache [NC]
    RewriteRule (.*) /showpic.php?pic=$1

    Das eingehende PHP Script sorgt dafür, dass alle Links, die auf deine Homepage zeigen auch angezeigt werden, allerdings immer mit einem Hinweis auf den Ursprung des Bildes. Die Unart, Bilder direkt in die eigene Homepage einzubinden wird durch die htaccess Datei verhindert. Der Versuch ein Bild per <img> Tag einzubinden scheitert an den .htaccess Einträgen die im folgenden beschrieben werden.

    RewriteEngine On
    Diese Zeile ist notwendig, damit mod_rewrite seine Aufgabe ausführen kann.

    RewriteCond %{REQUEST_FILENAME} .*jpg$|.*gif$|.*png$ [NC]
    Dies ist die erste Bedingung, mit der du festlegst auf welche Dateiendungen mod_rewrite reagieren soll. Damit ist sichergestellt, dass nur hotlinks auf Bilder verhindert werden. Du kannst die Regel aber auch auf weitere Dateitypen wie .swf oder .mp3 ausweiten.

    RewriteCond %{HTTP_REFERER} !^$
    Die zweite Bedingung besagt, dass der Referrer nicht fehlen darf. Damit ist sichergestellt, dass auch die Besucher deiner Seite, die den Referrer nicht übertragen, deine Bilder sehen können.

    RewriteCond %{HTTP_REFERER} !deineseite\.XXX [NC]
    RewriteCond %{HTTP_REFERER} [COLOR=blue]!deineseite\.XXX [NC]
    Diese beiden Zeilen erlauben das Verlinken von deiner eigenen Seite und von Seiten aus, die du authorisieren willst. Das du deine eigene Seite authorisierst ist wichtig, da du sonst nicht mehr in der Lage bist, innerhalb deiner Homepage links auf deine eigenen Bilder zu setzen.

    RewriteCond %{HTTP_REFERER} !google\. [NC]
    RewriteCond %{HTTP_REFERER} !search\?q=cache [NC]
    Diese beiden Befehle lassen es zu, das Leute, die Google Cache und Google Image Search verwenden, deine Bilder sehen können. Wenn du nicht willst, dass Leute deine Bilder über Google finden, dann lass die Zeilen weg.

    RewriteRule (.*) /showpic.php?pic=$1
    Diese letzte Regel leitet die Anfrage zum Bild an /showpic.php?pic=$1 um ($1 ist das gewünschte Bild).

    Ich habe auf meiner Test-Domain eine Seite eingestellt, die das oben beschriebene Verfahren demonstriert.

    http://ggnet.gg.funpic.de/bilderklau_demo.htm

  • Autor: Tutti


    Eigene Bilder vor Deeplink bzw. Trafficklau schützen


    Dein eigenes Werk in Form deiner Homepage ist vollbracht, du stellst dort vielleicht deine eigenen Bilder (Urlaubsfotos etc.) oder selbst erstellte Grafiken aus oder manch einem Forenbetreiber ist es vielleicht auch schon aufgefallen, dass Avatare, Smilies, Ränge halt alles was zur optischen Darstellung eines Forums dazgehört von anderen gern per Deeplink übernommen wird.


    Dein Inhalt wird auf anderen Seiten dargestellt allerdings werden die Grafiken immer von deiner Homepage geladen.
    Das kostet Traffic und letzten Endes, bei Überschreitung deines Limits sogar dein Geld.


    Folgende Rewrite-Regel leitet Anfragen mit fremden Referer auf eine Ersatzgrafik um.
    (Inhalt in eine .htaccess Datei einfügen, anpassen und ins Hauptverzeichnis (Root) laden!)

    Apache Configuration
    RewriteEngine on
    RewriteCond %{HTTP_REFERER} !^$
    RewriteCond %{HTTP_REFERER} !^http://(www\.)?deineHomepage\.de(/.*)?$ [NC]
    RewriteRule \.(gif|jpg|jpeg|png|GIF|JPG|JPEG|PNG)$ http://www.deineHomepage.de/images/geklaut.gif [R,L]


    In Zeile 3 muss "deineHomepage" durch den Namen deiner Homepage geändert werden.
    In Zeile 4 muss der Pfad zur Ersatzgrafik angegben werden (andere Dateiendungen können in den Klammern hinzugefügt werden).


    Wichtig!
    Grundvorrausstzung ist, dass dein Webhoster den Apache-Webserver mit aktivierten mod_rewrite Modul betreibt.


    Damit das ganze seinen Sinn nicht verfehlt, sollte die Ersatzgrafik so klein wie möglich gehalten werden.
    Vorschlag: unter 100x100 Pixel mit nur zwei bis drei optimierten Farben und als GIF abspeichern.
    [Blockierte Grafik: http://www.pc-mind.de/images/geklaut.gif] <- 554bytes mit abschreckendem Statement
    kann gern übernommen werden Aber auf dem eigenen Server :wink:

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!