Das Einbinden von Dateien – oft Bilder, Videos oder Musikdateien – auf einem anderem Host anstatt des eigentlichen Quell-Hosts, wird bei der Wikipedia als Hotlinking bezeichnen.
Prinzipiell finde ich es gar nicht schlimm, wenn jemand von mir angefertigte und im Web veröffentlichte Bilder oder Grafiken auch auf anderen Seiten einbindet. Man sollte hierbei aber so fair sein und die Quelle benennen und diese Datei nicht einfach als ein rechtsfreies Dokument betrachten, was beliebig verwendet werden kann.
Zum Bilderklau im Internet und wie man diesem begegnen kann habe ich bereits einige Hinweise veröffentlicht; interessant sind hier auch die bisher abgegebenen Kommentare. In diesem Artikel soll es aber um die Dirketeinbindung von Bildern gehen und wie sich das verhindern lässt.
Das Hotlinkig-Problem
Problematisch wird es, wenn Bilder direkt auf anderen Webseiten eingebunden werden. Also im HTML-Code die Bildquelle auf meinem Server/ Webspace genutzt wird. Denn dann habe ich den Traffic und bei stark frequentierten Foren, macht sich dieser zusätzliche Datendurchsatz u.U. schnell bemerkbar.
Je nach Besucheraufkommen auf dem fremden Host, wird natürlich bei jedem Aufruf meines Bildes ein Teil meiner Serverbandbreite und meiner Rechenleistung beansprucht. Ich möchte hierbei noch nicht einmal jedem eine böse Absicht unterstellen, denn ein Bild ist in einem Foren schon mal schnell bei einem passenden Eintrag eingebunden und dort aus meiner Sicht oft auch tolerierbar. Aber viele Fotografen sehen das sicherlich anders und denen möchte ich an dieser Stelle weiter helfen.
Anpassung der htaccess-Datei für eine Whitelist
In diesem Beispiel dürfen nur die in den Zeilen 5 bis 7 genannten Hosts meine Bilder bei sich anzeigen. Von allen anderen Hosts aus ist dies untersagt und es wird das Hinweisbild hotlink.png ausgegeben.
<ifmodule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^https://www\.redirect301\.de.*$ [NC] RewriteCond %{HTTP_REFERER} !^https://www\.google\..*$ [NC] RewriteCond %{HTTP_REFERER} !^https://www\.bing\..*$ [NC] RewriteCond %{HTTP_REFERER} !^https://pinterest\.com.*$ [NC] RewriteCond %{REQUEST_URI} !^.*hotlink\.png$ [NC] RewriteRule ^.*\.(gif|jpg|png|jpeg)$ https://www.redirect301.de/wp-content/uploads/hotlink.png [NC,R,L] </ifmodule>
Eine kurze Beschreibung der htaccess-Datei
Nach dem Aktivieren der Rewrite-Engine, die für das Umleiten der Anfragen zuständig ist, wird in Zeile 3 geprüft, ob es für die Anfrage keinen (!) Referrer gibt. Einen direkten Aufruf des Bildes möchte man sicherlich zulassen.
Ab Zeile 4 beginne ich nun zu „fragen“:
- Ist es nicht www.redirect301.de, also meine eigene Domain, die das Bild z.B. in einem Artikel anzeigen möchte.
- Und es ist auch nicht www.google.*, www.bing.* oder pinterest.com, die das Bild beispielsweise in der Bildersuche anzeigen möchten.
- Und natürlich darf es auch nicht mein Bild hotlink.png mit dem Warnhinweis sein, dass ggf. auf einer anderen Webseite, einem Forum o.ä. auf das Problem hinweisen soll.
- Treffen diese Punkte alle zu, dann lade anstatt einer Bilddatei (gif, jpg, png, jpeg) mein hotlink.png unter der angegebenen URL.
Weitere Informationen zum Umgang mit der htaccess-Datei hatte ich bereits hier auf redirect301.de vor einiger Zeit gepostet. Dieser Code-Baustein kann auch als Text-Datei herunter geladen und auf dem eigenen Webspace – entsprechend umbenannt – verwendet werden.
Das [NC] in den eckigen Klammern deaktiviert übrigens die Unterscheidung der Groß-/ Kleinschreibung.
Anpassung der htaccess-Datei für eine Blacklist
Möchte man lediglich einigen Webseiten oder Foren die direkte Einbindung der eigenen Bilder verbieten, kann man natürlich auch mit einer Blackliste arbeiten. In diesem Beispiel dürfen alle Seiten meine Bilder auch bei sich einbinden, außer die beiden in Zeile 4 und 5 genannten Hosts.
Wer also seine Bilder nicht über Pinterest oder beliebigen anderen Webseiten verbreiten möchte, kann dies auf diesem Weg unterbinden.
<ifmodule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} ^http://www\.boeses-forum\.de.*$ [NC,OR] RewriteCond %{HTTP_REFERER} ^https://pinterest\.com.*$ [NC] RewriteCond %{REQUEST_URI} !^.*hotlink\.png$ [NC] RewriteRule ^.*\.(gif|jpg|png|jpeg)$ https://www.redirect301.de/wp-content/uploads/hotlink.png [NC,R,L] </ifmodule>
Der Bildertausch – Mein Hinweisbild zum Thema Hotlinking
Ein anderes Bild mit einem netten Hinweis darauf, dass es sich hierbei um Bilder-Hotlinking handelt, reicht sicherlich oftmals aus. Natürlich ließe sich an dieser Stelle alles Mögliche (ein Stoppschild oder ein transparentes gif vielleicht) anstatt des eigentlichen Bildes einblenden. Ich halte aber eine entsprechend auffällige Mitteilung mit der Bitte diese Einbindung zu unterlassen für völlig ausreichend und auch angebracht.
Ich habe meinen Link natürlich nicht vergessen, welcher auf diesen Artikel verweist bzw. auf direkt diesen weiter leitet. Diese URL ist schnell eintippbar und dank entsprechender Tracking-Parameter weiß ich nun auch, wie viele diesen Hinweis irgendwo im Netz bereits gesehen und sich die Mühe gemacht haben, sich darüber zu informieren.
Redirect 301 /bilderklau https://www.redirect301.de/bilder-hotlinking-verhindern.html/?utm_source=bilderklau&utm_medium=referrer&utm_campaign=redirect301
Pinterest per Metatag aussperren
Im Blog von Björn Tantau wurde zuletzt beschrieben, dass sich das Pinnen veröffentlichter Bilder bei Pinterest auch per Metatag unterbinden lässt. Hierzu wird lediglich eine zusätzliche Meta-Angabe auf der eigenen Webseite erwartet.
<meta name="pinterest" content="nopin" />
Wer also damit ein Problem haben sollte, eine größere Zielgruppe mit seinen Fotos und Bildern zu erreichen, hat mit dieser einen Zeile HTML-Code ebenfalls eine entsprechende Möglichkeit dies zu verhindern.
Zu diesem Thema hat Viktor Dite ein paar Anmerkungen ins Netz gestellt, die auf die Nachteile des Pinterest-Metatags eingehen. Wer über diesen Schritt nachdenkt, sollte Viktors Bedenken auf mizine.de nicht unbeachtet lassen!
Nicht schlecht.
Ich denke, ich werde mir das mal für Nginx umbauen und auch einsetzen. Gerade das für pinterest ist interessant. Ich kannte den Dienst vorher noch garnicht.
Guter Tipp. Forenmitglieder stehlen Fotos am laufenden Band. Obwohl Ich bis jetzt scheinbar noch keine Probleme mit dem exta Datenverkehr hatte könnte Dies in Zukunft vielleicht leicht passieren.
Richtig schön wäre ein Crawler, der die URL auf einen Follow-Link zur eigenen Seite prüft und so eine Whitelist pflegt.
Ich würds nicht so hart „Bilderklau“ nennen – es geht nur um etwas Traffic. Man bekommt immerhin auch über die Bildersuche ein paar Besucher – für mich ist das soweit okay.
So verbissen sehe ich das Ganze auch nicht, wollte es aber mal probieren und sehen was passiert. Nach ca. 3 Wochen Testzeitraum hatte ich nun 22 Besucher, die www.redirect301.de/bilderklau im Browser eingegeben hatten.
Es gibt aber eine Reihe Fotografen, denen diese Möglichkeit nicht ganz unwichtig ist und wer will oder muss, kann die o.g. Möglichkeit bei sich nutzen.
Ich behalte mein Hinweisbild in der Hinterhand und werde ggf. mal auf eine Blacklist setzen.
Danke dir Daniel für die Zusammenstellung dieser Ansätze. Mich nervt dieses ganze Thema, denn wer möchte schon das der eigene Aufwand zur Erstellung von Bildmaterial, von anderen dermaßen ausgenutzt wird.
Wenn man so etwas mal exemplarisch bemerkt, hilft auch oft, das entsprechende Bild einfach mit einem lustigen Wasserzeichen zu versehen, das den Dieb bloß stellt. Haben wir schon oft gemacht. ^^
@Daniel solche Leute würde ich noch nichts mals Freischalten, sonst hast du in den nächsten Tagen noch weitere davon am Hals :-)
Aber schon dumm wenn man die Links nicht richtig setzen kann :-))
Ja klar @Tobias.
Nur mal für einen Abend, um bei Google+ darauf hinzuweisen. Ist bestimmt ein armer Schülerpraktikant, der den ganzen Tag kurz und knapp auf Blogeinträge kommentieren muss (thematisch hat er sich ja mit dem Artikel auseinander gesetzt) und eine Liste mit Vornamen und Shop-Artikeln abarbeitet …
Hallo, wie ist es möglich per .htaccess oder robot.txt auf der eigenen Webseite (Forum) zu verhindern das von bestimmten Webseiten Hotlinks auf die eigene Page eingebunden werden. Also der Hotlink sollte zumindest nicht angezeigt werden.
Schick mal ’nen Link! Weiß gerade nicht wirklich genau, was du meinst.
Ich meine damit Bilderhotling auf eigene Webseite verbindern, dass also ein Bilderhotlink einer bestimmtne Domain im Forum dann z.B. unkenntlich erscheint oder garnciht erscheint.
In deinem Forum postet jemand ein Bild und wenn das von einer bestimmten Domain (sagen flickr.com) aus eingebunden wird, dann soll die nicht angezeigt werden?
Ja klar, kein Ding. Am einfachten und sinnvollsten wäre es aber direkt im PHP-Code des Forums.
Wenn Bild von flickr.com dann zeige Dummybild!
Für die htaccess könnte sowas in der Art funktionieren:
RewriteCond %{HTTP_HOST} ^www.flickr.com [NC]
RewriteRule ^.*\.(gif|jpg|png|jpeg)$ http://deinedomain.de/flickr.png [NC,R,L]
Ist der Host also flickr.com, dann leite Bilder auf dein Bild um. Ist nicht schön und ich würde wirklich das ganze lieber im PHP-Code des Forums einbauen. Schau doch mal, ob es da für dein System nicht ein Plugin für Blacklisting o.ä. gibt.
Leider klappt das bei mir nicht, das jpg Bild ist nach wie vor drin.
Ausgezeichneter Artikel mit Anleitung die auch funktioniert! Danke.
Eine Frage: Hat der Eintrag in die htacsess irgendwelche negativen Auswirkungen auf das Crawlen, sagen wir von Google ect.
Hallo!
Feine Sache. Aber verursacht nicht auch dieses Fehlerbild Traffic?
Gruß, René
Ja natürlich! Traffic dürfte aber heutzutage bei keinem Hoster mehr wirklich das Problem sein. Du kannst dir das ganze aber auch so umbauen, dass Bild nicht auf deinem Webspace liegt, sondern z.B. bei Google Drive oder einem anderen Cloud-Dienst.
Hallo Daniel, vielen Dank für die Anregungen in diesem Artikel. Bilderklau ist gerade für Fotoblogger eine ärgerliche Geschichte. Ich habe eben einige Tests gemacht und Dein Script funktioniert super!
Top!
Hallo, ganz herzlichen Dank für den Code. Vielleicht solltest Du den aber noch auf https aktualisieren, Google & Co. und auch die meisten eigenen Seiten laufen doch schon oder demnächst auf https
Grüße
Oliver
Hallo,
bei mir funzt das nicht.Das Bild welches Verlinkt werden soll,bzw danach nicht mehr Verlinkt werden soll,wird ohne Probleme Verlinkt.Leider bin nicht gerade der Profi,bin froh das meine Seite läuft.Aber das Hotlinking Problem habe ich an eigener Haut Erfahren müssen,und würde für die Zukunft gerne einen Riegel vor dieselbe schieben.
Lg Rolf
Hallo Daniel,
habe in letzter Zeit festgestellt, dass viele Websites Grafiken von meinem Projekt https://www.clipartsfree.de/ massenhaft nutzen. Einige binden direkt mithilfe von Hotlinking ein.
Beispiele:
http://cloudsafeguard.info/tropische-weihnachtsfotos
https://clmblog.info/bild-froehliche-weihnachten-nikolaus-gratis-weihnachtsmann-bilder
http://cloudsafeguard.info/tropische-weihnachtsfotos
etc.
Andere kopieren meine Bilder auf eigenen Server. In beiden Fällen werden die Inhalte einfach gestohlen.
Habe in .htaccess-Datei den folgenden Code eingefügt:
“
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} ^http://dreamleaguesoccerkits\.info.*$ [NC,OR]
RewriteCond %{HTTP_REFERER} ^http://cloudsafeguard\.info.*$ [NC]
RewriteCond %{REQUEST_URI} !^.*hotlink\.png$ [NC]
RewriteRule ^.*\.(gif|jpg|png|jpeg)$ https://www.redirect301.de/wp-content/uploads/hotlink.png [NC,R,L]
“
Leider hat das keinen Effekt gehabt. Bilder werden nach wie vor auf fremden Ressourcen angezeigt.
Folgende Fragen habe ich an Dich:
1. Warum funktioniert der Code aus .htaccess nicht?
2. Wie kann man sich vom Kopieren der Bildern auf andere Server schützen?
3. Kann mehrfache Einbindung der Bilder auf anderen Websites als „Double content“ durch Google und Co. gedeutet werden?
Gruss
Maks
Ich habe deine Lösung für einen Kunden in seine Webseite eingebaut.
Hier ist eine RegEx für Domains, die auch Subdomains verwenden:
^(https?://)([a-zA-Z0-9-_~.]*)\.?(my-domain)\.(\w*)(/.*)?$
Facebook beispielsweise hat das Länderkürzel in der Subdomain (https://de-de.facebook.com/)
Vielleicht hilft es jemandem.
UPDATE – kleine aber Feine Korrektur in der RegEx:
^(https?:\/\/)([a-zA-Z0-9-_~.]*\.)?(my-domain)\.(\w*)(\/.*)?$
@Daniel:
Ich habe das Problem, dass Bilder die über http:// auf einer externen Seite eingebunden sind, durch meine Regel durchfallen. Alle Bilder mit https:// werden ersetzt. Was mache ich falsch?
hier mein Code:
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^(https?:\/\/)([a-zA-Z0-9-_~.]*)\.?(martin-vahlbruch)\.(de)(\/.*)?$ [NC]
RewriteCond %{HTTP_REFERER} !^(https?:\/\/)([a-zA-Z0-9-_~.]*\.)?(google)\.(\w*)(\/.*)?$ [NC]
RewriteCond %{HTTP_REFERER} !^(https?:\/\/)([a-zA-Z0-9-_~.]*\.)?(bing)\.(\w*)(\/.*)?$ [NC]
RewriteCond %{HTTP_REFERER} !^(https?:\/\/)([a-zA-Z0-9-_~.]*\.)?(yahoo)\.(\w*)(\/.*)?$ [NC]
RewriteCond %{HTTP_REFERER} !^(https?:\/\/)([a-zA-Z0-9-_~.]*\.)?(duckduckgo)\.(\w*)(\/.*)?$ [NC]
RewriteCond %{HTTP_REFERER} !^(https?:\/\/)([a-zA-Z0-9-_~.]*\.)?(startpage)\.(\w*)(\/.*)?$ [NC]
RewriteCond %{HTTP_REFERER} !^(https?:\/\/)([a-zA-Z0-9-_~.]*\.)?(qwant)\.(\w*)(\/.*)?$ [NC]
RewriteCond %{HTTP_REFERER} !^(https?:\/\/)([a-zA-Z0-9-_~.]*\.)?(facebook)\.(\w*)(\/.*)?$ [NC]
RewriteCond %{HTTP_REFERER} !^(https?:\/\/)([a-zA-Z0-9-_~.]*\.)?(twitter)\.(\w*)(\/.*)?$ [NC]
RewriteCond %{HTTP_REFERER} !^(https?:\/\/)([a-zA-Z0-9-_~.]*\.)?(linkedin)\.(\w*)(\/.*)?$ [NC]
RewriteCond %{HTTP_REFERER} !^(https?:\/\/)([a-zA-Z0-9-_~.]*\.)?(xing)\.(\w*)(\/.*)?$ [NC]
RewriteCond %{HTTP_REFERER} !^(https?:\/\/)([a-zA-Z0-9-_~.]*\.)?(youtube)\.(\w*)(\/.*)?$ [NC]
RewriteCond %{HTTP_REFERER} !^(https?:\/\/)([a-zA-Z0-9-_~.]*\.)?(vimeo)\.(\w*)(\/.*)?$ [NC]
RewriteCond %{HTTP_REFERER} !^(https?:\/\/)([a-zA-Z0-9-_~.]*\.)?(pinterest)\.(\w*)(\/.*)?$ [NC]
RewriteCond %{HTTP_REFERER} !^(https?:\/\/)([a-zA-Z0-9-_~.]*\.)?(instagram)\.(\w*)(\/.*)?$ [NC]
RewriteCond %{HTTP_REFERER} !^(https?:\/\/)([a-zA-Z0-9-_~.]*\.)?(flickr)\.(\w*)(\/.*)?$ [NC]
RewriteCond %{REQUEST_URI} !^.*Bilderklau\.jpg$ [NC]
RewriteRule ^.*\.(jpg|jpeg|png|gif)$ https://martin-vahlbruch.de/Bilderklau.jpg [NC,R,L]