Referer Bilderschutz mit mod_rewrite per htaccess
Wer das benutzen seiner Bilder auf anderen Seiten verhindern möchte hat im Internet schlechte Karten. Wenn die Bilder direkt verlinkt werden kann man mit mod_rewrite diese immerhin mit Hilfe eines Referer Checks schützen. Das gilt natürlich für jeglichen per Webserver ausgelieferten Content, aber bei Bildern sieht man es besonders oft. Da das Thema aus anderen Gründen bei mir auf Arbeit aufgeploppt ist und ich mich mal wieder 0 daran erinnern konnte, hier also eine kurze Anleitung wie man es mit Hilfe von mod_rewrite gelöst bekommt. Wichtig war mir das ich die .htaccess Datei an einer zentralen Stelle ablegen kann und nur einzelne Unterordner schützen kann.
Als erstes überlegt man sich welche Ordner man schützen möchte und sucht sich eine zentrale Stelle (übergeordneter Ordner) aus an der man die .htaccess Datei ablegen möchte.
Zu schützende Ordner:
/var/www/vh-example/htdocs/public/images/schuetzmich/ /var/www/vh-example/htdocs/public/images/michauch/
Die .htaccess Datei lege ich hierfür in die DocumentRoot, das ist dieser Ordner:
/var/www/vh-example/htdocs/public/
Und hier nun der Inhalt.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_URI} \.(jpg|jpeg|gif|png)$ [NC]
RewriteCond %{REQUEST_URI} /images/schuetzmich/.*$ [OR]
RewriteCond %{REQUEST_URI} /images/michauch/.*
RewriteCond %{HTTP_REFERER} !^(http|https)?://(.*)debianroot.de(.*) [NC]
RewriteRule ^(.*)$ - [F]
</IfModule>
Eingeschlossen wird das ganze in einem IfModule Block. Damit wird der Inhalt nur ausgeführt wenn das Module mod_rewrite auch geladen ist. Zeile 2 aktiviert mod_rewrite. Als erstes werden die zu schützenden Dateitypen definiert, dann kommen die Verzeichnisse. Diese werden mit [OR] verknüpft und zu guter Letzt der eigentliche Referer Check. Das [NC] besagt das keine Groß- und Kleinschreibung beachtet werden soll. Wenn nun alle Bedingungen erfüllt sind, wird die RewriteRule ausgelöst. In diesem Fall wird ein Forbidden an den Browser gesendet, aber man könnte dem User hier auch ein anderes Bild anzeigen.
Natürlich ist ein Referer Schutz nichts hundertprozentiges. Da der Referer vom Browser verschickt wird, kann man ihn sehr leicht fälschen/anpassen/weglassen, aber man deckt damit immerhin eine recht große Gruppe an unwissenden ab. Problematisch ist das einige Browser oder Browserextensions den Referer komplett weglassen. Wenn man seine Seite nun damit geschützt hat werden User mit diesem Problem sicher kein Fans der Seite.
Die Flash Referer Problematik
Aktuell (oder besser seit langem) gibt es ein Problem mit Flash und dem Firefox, wenn Flash Bilder aus geschützten Verzeichnissen laden soll. Leider wird hierbei kein Referer versendet und somit greift der Referer Schutz. Aktuell ist mir keine Lösung für dieses Problem bekannt.
4 Kommentare
Christopher
schrieb am 14.02.2011 um 22:02 Uhr
Ich hasse Webseiten mit diesem “Schutz”. Habe den Referer aus Datenschutzgründen, wie viele andere, abgeschaltet und bekomme dann einen Haufen Ersatzbilder zu sehen in denen ich als Dieb beschimpft werde oder sehe nur eine halbe Seite. Bitte lasst das sein. Das Internet ist zum verlinken da und wenn ihr merkt, dass jemand exzessiv eure Bilder nutzt könnt ihr ja noch im Einzelfall einschreiten.
kostaki
schrieb am 15.02.2011 um 09:10 Uhr
Bin ich anderer Meinung. Es gibt valide Einsatzgebiete für solch einen Schutz. Vielleicht nicht auf jeder Seite, aber auf bestimmten macht es definitiv Sinn!
Christopher
schrieb am 16.02.2011 um 22:03 Uhr
Ich finde ein Wasserzeichen meist angebrachter. Stört selten und wenn das Bild fremdgenutzt wird ist das dank Wasserzeichen eher Werbung fürs eigene Angebot.
S.Schumacher
schrieb am 17.05.2011 um 11:01 Uhr
Hallo,
du schreibst hier “…aber man könnte dem User hier auch ein anderes Bild anzeigen.”
Wie wäre denn hierfür der Code – bzw. wenn ich dem Benutzer dann eine eigene Fehlerseite mit einem Hinweis auf verbotenes Hotlinking zeigen wollen würde?
Danke und Gruß, Steffen