Rewrite Regeln und Bedingungen für die Auslieferung von Bildern
Konditionen für die Auslieferung von Fotos und sonstigen Grafiken
Übersicht / Seite:
- Hotlinking von Bildern (mit Beispielen für Gegenmaßnahmen)
- Text in Bilder einfügen (mit PHP, ImageTTFText und geeigneten Fonts)
- Rewrite Regeln (und Bedingungen für die Auslieferung von Images)
- Clientseitige Möglichkeiten (zum Austausch von Grafiken)
- Ein weiteres PHP-Script (zur Einfügung von sichtbaren Wasserzeichen)
Vorbemerkung / Hinweis: Cloaking mit Bildern
Die auf dieser Seite vorgestellten Rewrite-Regeln verhindern nicht die Auslieferung
von Fotos und sonstigen Grafiken bei unautorisierten Anfragen, sondern dienen nur dazu, mit einem Script
geänderte Grafiken auszuliefern. Diese Vorgehensweise wird als Cloaking bezeichnet, wenn sie gezielt dazu
eingesetzt wird, den Besuchern einer Webseite andere Inhalte zu präsentieren, als den Crawlern (Bots)
von Suchmaschinen.
Der Einsatz von Cloaking-Methoden widerspricht den Richtlinien für Webmaster von Google, Bing und sicherlich
ebenso von anderen Suchmaschinen. Die Folge könnte eine Abwertung oder Entfernung aus dem Index der Suchmaschinen
sein. Ob sich eine mögliche Abwertung oder Entfernung nur auf die nachträglich veränderten Bilder beziehen
würde oder die bereitstellenden Seiten mit abgewertet oder aus dem Index entfernt werden, ist derzeit nicht
bekannt (Stand: Februar 2013). Wir empfehlen aus den genannten Gründen, das Script und die entsprechenden
Regeln nur für Testzwecke einzusetzen.
Ratsamer erscheint es monentan, es den Bilderdiensten gleichzutun und Wasserzeichen zu verwenden. Mit clientseitigen
Lösungen könnten dann zum Beispiel Bilder ohne Wasserzeichen nachgeladen werden. Bei serverseitigen Lösungen
würden Session-Cookies in Betracht kommen, die vergeben und abgefragt werden könnten, um Grafiken ohne Wasserzeichen
auszuliefern.
Rewrite Regeln
Beim ersten Beispiel wird bei allen Aufrufen überprüft, ob ein Referrer übergeben
wurde. Wurde kein Referrer übergeben, wird vom Nutzer unbemerkt das vorgestellte Script im Hintergrund geladen
und ein bearbeitetes Images ausgeliefert.
Erstes Beispiel:
RewriteEngine On
RewriteCond %{HTTP_REFERER} ^$ [NC]
RewriteRule ^(.+)\.(jpg|png)$ /images.php?image=$1&endung=$2 [NC,QSA,L]
Beim zweiten Beispiel wird nicht nur überprüft, ob ein Referrer übergeben
wurde, sondern ob dieser Referrer mit der eigenen Domain übereinstimmt. Durch die Negation mit ! erfolgt
der Aufruf des Scripts immer dann wenn die Überprüfung keine Übereinstimmung mit dem Suchmuster ergab.
Zweites Beispiel:
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^http://(www\.)?example\.com.*$ [NC]
RewriteRule ^(.+)\.(jpg|png)$ /images.php?image=$1&endung=$2 [NC,QSA,L]
Soll der ungehinderte Zugriff mehr als einer Domain gestattet werden, können
die zusätzlichen Domains wie im dritten Beispiel mit aufgenommen werden. Bei diesem Beispiel würde bei Anfragen
von example.net und example.com das jeweilige Bild ohne den Umweg über images.php ausgeliefert werden.
Drittes Beispiel:
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^http://(www\.)?example\.com.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://(www\.)?example\.net.*$ [NC]
RewriteRule ^(.+)\.(jpg|png)$ /images.php?image=$1&endung=$2 [NC,QSA,L]
Separates Verzeichnis für ausgewählte Fotos
Unter
Umständen sollen nicht alle Grafiken, sondern nur einige ausgewählte Fotos bei unautorisierten Zugriffen
mit einem Vermerk oder Wasserzeichen gekennzeichnet werden. In diesem Fall würde es sich anbieten, das Script
und eine htaccess-Datei zusammen mit den ausgewählten Fotos in ein separates Verzeichnis zu speichern. Diese
Vorgehensweise hätte zusätzlich noch den Vorteil, dass kein Eintrag in der htaccess des Root-Verzeichnisses
erforderlich ist.
Für das vierte Bespiel wurden einige Bilder in das Verzeichnis /gesperrte abgelegt. In diesem Verzeichnis
wurde ebenfalls das Script gespeichert und eine htaccess-Datei mit folgenden Konditionen.
Viertes Beispiel:
RewriteEngine on
RewriteCond %{REQUEST_URI} ^.*/gesperrte/.*$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?example\.com/.*$ [NC]
RewriteRule ^([^/]+)\.(jpg|png)$ /gesperrte/images.php?image=$1&endung=$2 [NC,QSA,L]
Es sei angemerkt, aus den durchgeführten Tests ergab sich, dass das Muster
für RewriteRule nur auf den eigentlichen Namen der Datei zutreffen muss, nicht aber auf den ganzen Pfad.
Der Pfad zum Script muss hingegen vollständig aufgenommen werden, falls der Pfad ab Root mit vorangestellten
Schrägstrich (Slash) notiert wird. Ohne vorangestellten Schrägstrich sollte /gesperrte/ hingegen
entfallen können.
Insofern alles richtig eingerichtet wurde und ein Image aus dem Verzeichnis aufgerufen wird, findet in der
ersten Zeile eine Überprüfung statt, ob in der Request URI das Verzeichnis /gesperrte/ enthalten ist und
in der zweiten Zeile wird an Hand des Referrers überprüft, ob der Zugriff nicht von den eigenen Seiten erfolgte,
bevor das Script ausgelöst wird.
Weiterhin sei angemerkt, dass die erste Zeile entfallen kann, da bei einem Zugriff auf das Verzeichnis "gesperrte"
praktisch "gesperrte" immer in der Request URI enthalten ist. Wird die htaccess hingegen
eine Ebene höher abgelegt, so muss der Name des Verzeichnisses bereits in der Rewrite Regel mit aufgenommen
werden.
Beispiel:
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^http://(www\.)?example\.com/.*$ [NC]
RewriteRule ^gesperrte/([^/]+)\.(jpg|png)$ /gesperrte/images.php?image=$1&endung=$2 [NC,QSA,L]
Cloaking vermeiden
Cloaking sollte sich vermeiden lassen, in dem den Besuchern der eigenen Seiten
und den Bots von Suchmaschinen dieselben Inhalte geboten werden. Erreichen lässt sich dies über eine Abfrage
des User Agents, wie im fünften Beispiel.
Fünftes Beispiel:
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^http://(www\.)?example\.com.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://(www\.)?example\.net.*$ [NC]
RewriteCond %{HTTP_USER_AGENT} !^.*bot.*$ [NC]
RewriteCond %{HTTP_USER_AGENT} !^.*slurp.*$ [NC]
RewriteCond %{HTTP_USER_AGENT} !^.*mediapartners.*$ [NC]
RewriteRule ^([^/]+)\.(jpg|png)$ /gesperrte/images.php?image=$1&endung=$2 [NC,QSA,L]
Bei Verwendung des fünften Beispiels sollten bei Anfragen von example.net
und example.com sowie bei den Anfragen der wichtigsten Bots von Google, Bing, Yandex und Yahoo die Bilder
unverändert geladen werden, ohne dabei die images.php auszulösen. Da aber keine aus Langzeittests resultierenden
Erfahrungen vorliegen, würden wir dennoch dazu raten, Script und htaccess-Regeln nur für Testzwecke oder
wie im Beispiel, nur für ausgewählte Verzeichnisse zu benutzen.
Obwohl beim fünften Beispiel praktisch kein Cloaking im eigentlichen Sinne vorliegt, da Crawler und User
die unveränderten und somit dieselben Bilder ausgeliefert bekommen, kann ein Rankingverlust oder eine Entfernung
aus dem Index leider auch bei dieser Variante nicht völlig ausgeschlossen werden.
Text in Bilder einfügen
« zurück / weiterlesen » Clientseitige Möglichkeiten
|