Vorwort
In diesem Tutorial wollen wir uns verschiedene Techniken anschauen, wie man sich vor Traffic- und Bilderdieben schützen kann. Bevor wir anfangen sollte allerdings eins klar sein: einen ultimativen Schutz gibt es nicht, aber es gibt Wege den Dieben ihre Arbeit zu erschweren!
Meistens werden Bilder nicht in böser Absicht geklaut, sondern schlicht und einfach, weil die Bilder gefallen oder nützlich für einen bestimmten Zweck sind. Der "Durchschnittsdieb" ist auch kein ausgekochtes Schlitzohr, sondern der Hobby-Webmaster von nebenan, dessen HTML-Kenntnisse sich meist auf MS Frontpage beschränken. Dinge wie Copyright-Verletzungen oder das durch den Trafficklau Kosten für den Geschädigten entstehen werden dabei ignoriert. Genau gegen diese Art Datendiebe richten sich die hier gezeigten Techniken.
Welche Möglichkeiten gibt es?
Wir werden uns insgesamt 5 Möglichkeiten anschauen, die man auf 3 verschiedene Arten realisieren kann. Im einzelnen sind das:
- htaccess: Statt dem Bild ein "rotes X" ausgeben, wenn jemand auf ein Bild hotlinked
- htaccess: Statt dem Bild wird eine alternative Grafik ausgegeben, wenn jemand auf ein Bild hotlinked
- CSS und HTML: Auf ein Bild verlinken oder "rechtklick->Speichern unter" liefert nur eine Ersatzgrafik statt des eigentlichen Bildes.
- PHP: Wir binden die Grafik über ein Script ein, wobei der eigentliche Pfad unerkannt bleibt
- PHP: Der Klassiker, das Wasserzeichen
Jede Technik hat Vor- und Nachteile, deswegen muß jeder für sich entscheiden welche für ihn die beste ist. Natürlich ist es auch möglich verschiedene Techniken zu kombinieren.
Wie
Al Bundy jetzt sagen würde:
"Gehen wir's an...!"
Die Techniken im Einsatz
Zunächst einmal müssen wir wissen wie die Diebe vorgehen um unsere Bilder zu klauen. Dafür gibt es quasi nur eine sinnvolle Möglichkeit und das ist ein Rechtsklick auf's Bild und unter Eigenschaften nachschauen wie die Adresse und der Name des Bildes ist. Diese Adresse wird dann frech in die fremde Webseite eingebunden und der Trafficklau ist perfekt.
Glücklicherweise stehen wir diesem diebischen Treiben nicht ganz mittellos gegenüber. Schauen wir uns nun an wie wir uns schützen können.
1. htaccess - Kein Bild gefunden (Das rotes X im IE)
Zunächst sollten wir klären was eine .htaccess Datei überhaupt ist. Laut dem
Artikel auf Wikipedia handelt es sich bei der .htaccess Datei um eine Konfigurationsdatei mit der wir Einfluß auf das Verhalten des Webservers nehmen können. Je nach Provider und Webpaket hat man mehr oder weniger, bzw gar keinen Zugriff auf diese Datei. Deswegen unbedingt beim Provider abklären ob man .htaccess benutzen darf, bevor versucht wird diese Tipps hier einzusetzen.
Übrigens, es handelt sich nicht um einen Schreibfehler beim Dateiname, sondern es kommt tatsächlich ein Punkt
vor dem Name und eine Dateiendung in dem Sinn gibt es auch nicht.
Code:
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://www.domain.tld$ [NC]
RewriteRule \.(jpg|JPG)$ [F]
Dieses Listing ist kurz aber effektiv. In der ersten Zeile wird die sogenannte RewriteEngine (RE) eingeschaltet. Die RE nimmt Anfragen entgegen (wenn wir eine Adresse im Browser aufrufen) und behandelt die Anfrage gemäß der RewriteCond.
Die RewriteCond (Cond steht kurz für Condition = Bedingung) legt fest, welche Bedingungen erfüllt sein müssen damit definierte Regeln (RewriteRule) auf die Anfrage angewendet werden. In unserem Listing bedeutet das, wenn kein leerer Referrer übergeben wurde (z.B. weil die Seite direkt nach dem Browser-Start über einen Bookmark aufgerufen wurde)
Code:
RewriteCond %{HTTP_REFERER} !^$
oder wenn die Anfrage
nicht (das Ausrufungszeichen negiert den Ausdruck) von unserer Domain kam
Code:
RewriteCond %{HTTP_REFERER} !^http://www.domain.tld$ [NC]
soll die nachfolgende Regel angewendet werden.
Code:
RewriteRule \.(jpg|JPG)$ [F]
Diese kurze Zeile erledigt die ganze Arbeit für uns. Jede Anfrage nach einer Datei mit der Endung
jpg oder JPG die durch die Conditions getriggert wird, bekommt durch das
[F] einen Fehler gesendet, was zur Folge hat das im Browser das "Bild nicht gefunden"-Symbol angezeigt wird.
Einfach, nicht wahr?!
Allerdings mag ich diese Variante nicht sonderlich. Der Grund ist einfach der, daß der Dieb uns durch den Trafficklau schaden wollte und alles was wir tun ist ihm nur das Diebesgut zu verweigern. Ich vertrete aber die Meinung das die Besucher der Dieb-Seite ruhig von den miesen Machenschaften des Betreibers wissen sollten. Aus diesem Grund bevorzuge ich es dem Dieb-Seiten-Besucher mitzuteilen das versucht wurde sich mit fremden Lorbeeren zu schmücken und zwar mit...
2. htaccess - Eine Alternativ-Grafik senden
Nachdem unter 1. bereits geklärt wurde was eine .htaccess Datei und auch was eine RewriteCond und RewriteRule ist, fällt dieser Abschnitt kürzer aus, da beide Listings weitgehend identisch sind.
Code:
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://www.domain.tld$ [NC]
RewriteRule \.(jpg|JPG)$ /bilder/dieb.gif [R,L]
Neu ist hier nur die letzte Zeile. Statt eines Fehlers senden wir hier eine alternative Grafik statt des angeforderten Bildes. Was hier
"/bilder/dieb.gif" ist muß natürlich vom Pfad und Dateiname zur Alternativ-Datei angepasst werden. Ebenso ist hier wie auch im 1. Beispiel das
"domain.tld" durch die entsprechende eigene Domain auszutauschen.
Wieso nun eine Alternativ-Grafik senden?
Zum einen kann man ein schlankes 2-Farben GIF senden und spart somit sehr viel Traffic, zum anderen kann man hier eine nette Text-Botschaft mitschicken die dann auf der Dieb-Seite statt des erhofften Bildes angezeigt wird. Es versteht sich von selbst das eine Botschaft wie etwa
"Sie besuchen die Seite eines Traffic-Diebes! Um das original Bild zu sehen besuchen Sie bitte: domain.tld" durchaus seine Wirkung hat.
Der Clou an der Sache ist -und das habe ich selbst erst durch Zufall herausgefunden- das der eigentliche Dieb meist gar nichts davon mitbekommt, bzw erst viel später von der Alternativ-Datei etwas sieht! Das liegt nämlich daran, daß der Dieb, dadurch das er die Bilder einmal vollständig auf unserer Seite geladen hat, später auf seiner eigenen Seite die Bilder aus dem Browser Cache geliefert bekommt. Das verschafft uns wertvolle Zeit seine Site-Besucher über die miese Tour aufzuklären.
3. CSS und HTML - Der Trick mit dem GIF
Hier setzen wir auf Täuschung, um dem Dieb seine Unfähigkeit vor Augen zu führen. Die meisten die etwas
"auf dem Kasten haben" werden diesen Trick schnell durchschauen, aber zum Glück gehört der gewöhnliche Bilderdieb nicht zu dieser Gattung. Wie weiter oben erwähnt greift sich der Dieb nur den Pfad zum Bild oder klaut das Bild mit
"rechtsklick->speichern unter" ohne weiter auf den Dateiname zu achten. Genau das machen wir uns hier zunutze!
HTML-Code:
<div style="width: 640px; height: 480px; background: transparent url(ferienhaus.jpg) no-repeat;">
<img src="ferienhaus.gif" alt="Unser Ferienhaus" width="640" height="480" />
</div>
Der Fachmann sieht es bereits oder kann es sich denken. An die Stelle an der unser Bild (ferienhaus.jpg) plaziert werden soll setzen wir einen DIV-Container. Diesen Container versehen wir mit einem Hintergrundbild und zwar wird dafür das Bild genommen auf das unser Gauner scharf sein könnte. In diesen Container plazieren wir anschließend ganz normal einen Image-Tag aber statt unseres JPGs setzen wir hier ein transparentes GIF ein, das 5x5 Pixel groß ist und über die
height & width Attribute auf die Größe des original Bildes gebracht wird (hier 640x480). Um die Täuschung etwas echter zu machen benennen wir das Gif mit dem selben Namen wie das original Bild.
Somit liegt also ein transparentes Gif (ferienhaus.gif)
über dem eigentlichen Bild (ferienhaus.jpg). Klickt man nun mit rechts auf das Bild und kopiert die Adresse oder speichert das Bild auf der Festplatte ab, bekommt man nur die Daten zu dem nutzlosen, transparenten Gif.
Wenn der Dieb seinen Fehler bemerkt hat, wird er in der Regel nicht noch mal zurück kommen und sich durch die CSS Datei wühlen, nur um dann manuell den echten Pfad herauszusuchen, denn das würde Arbeit bedeuten und die will ja so ein Dieb schließlich vermeiden.
Diese Methode ist also weniger ein echter Schutz, als viel eher ein ausnutzen der Dummheit und/oder Faulheit des Diebes.