• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Es regnet, ist neblig und kalt, alle sind krank und der Chef wird zunehmend cholerisch. Das Thema des Monats ist also folgerichtig --> Das Grau(en)
    Wir sind gespannt, war Euch dazu einfällt! Zum Wettbewerb --> Klick

Script: verlinken von Bildern verhindern

.holger

Borowitzky
Registriert
13.09.04
Beiträge
8.971
Moin moin, weil es grad in einem anderen Thread gefragt wurde und ich mir vor 2 Jahren da eine nette Sache geschrieben habe hier ein kleines Script, wie ihr verhindern könnt, dass Leute Bilder, die auf Eurer Seite sind, selber auf ihren eigenen Seiten oder in Foren verlinken (Bilderdiebstahl wird damit natürlich nicht zu 100% verhindert und man kann das ganze auch umgehen, wenn man die Übertragung des Referers im Browser ausschaltet).

So, hier die Anleitung:

Diesen Code:
Code:
<FilesMatch "\.(gif|jpe?g|png|bmp|pdf|zip|rar|mp3|js)$"> 
RewriteEngine on 
RewriteCond %{HTTP_REFERER} !^$ 
RewriteCond %{HTTP_REFERER} !^http://(www\.)?deinedomain.com/.*$ [NC] 
RewriteCond %{REQUEST_FILENAME} !dieb.jpg$ 
RewriteCond %{REQUEST_FILENAME} !imgdieb.php$ 
RewriteRule .*\.(gif|jpe?g|png|bmp|pdf|zip|rar|mp3|js)$ http://www.deinedomain.com/verzeichnis/neuesbild.jpg [R] 
</FilesMatch>

speichert ihr als .htaccess im Hauptverzeichnis des Servers. Man kann das ganze auch noch optimieren und loggen welche Seite eine Datei verlinkt hat:

Dann sieht die .htaccess so aus:
Code:
<FilesMatch "\.(gif|jpe?g|png|bmp|pdf|zip|rar|mp3|js)$"> 
RewriteEngine on 
RewriteCond %{HTTP_REFERER} !^$ 
RewriteCond %{HTTP_REFERER} !^http://(www\.)?deinedomain.com/.*$ [NC] 
RewriteCond %{REQUEST_FILENAME} !dieb.jpg$ 
RewriteCond %{REQUEST_FILENAME} !imgdieb.php$ 
RewriteRule .*\.(gif|jpe?g|png|bmp|pdf|zip|rar|mp3|js)$ http://www. deinedomain.com/imgdieb.php [R] 
</FilesMatch>
und die imgdieb.php so:
Code:
<?PHP 
$refer = $_SERVER['HTTP_REFERER'];
$zeit = time(); 


$datenserver ="localhost";//ServerAdresse 
$datenbank = "XXXXXX"; // Datenbank name 
$datenuser = "XXXXXX"; // dantenbank user 
$passwort = "XXXXXXXX"; // datenbank passwort 


$db = mysql_connect($datenserver,$datenuser,$passwort); 
mysql_select_db($datenbank,$db); 
$anfuegen=mysql_query("INSERT INTO referlog (refer,time) VALUES ('$refer','$zeit')");     
$eintragen = mysql_query($anfuegen); 

header ("Content-type: image/jpeg"); 
$image = imagecreatefromjpeg("dieb.jpg"); 
imagejpeg($image,'',80); 
ImageDestroy($image); 

?>
In der MySQL Tabelle referlog (die natürlich angelegt sein muss - mit den Spalten refer und time) werden dann die Seiten und die Urzeit gespeichert. Als neues Bild wird gleichzeitig die Datei dieb.jpg ausgegeben. Ach und in der .htaccess kann man noch weitere Domains/Seiten eintragen, die ruhig Bilder verlinken dürfen, dazu fügt ihr weitere Zeilen dieser Art ein:

RewriteCond %{HTTP_REFERER} !^http://(www\.)?deinedomain.com/.*$ [NC]
und passt jeweils die Domain an.

viel "Spass" damit.
 
Zuletzt bearbeitet:
  • Like
Reaktionen: 1 Person

tjp

Altgelds Küchenapfel
Registriert
07.07.04
Beiträge
4.060
Das einzige was wirklich funktioniert, ist es dynamische URLs für jedes Bild zu erzeugen.
 

MrNase

Champagner Reinette
Registriert
11.01.05
Beiträge
2.656
Was haben denn die Sternchen im Code für eine tolle Funktion? ;)
 

Hilarious

Gelbe Schleswiger Reinette
Registriert
10.08.05
Beiträge
1.759
Solche Lösungen erfreuen mich immer sehr, da man mit mod_rewrite und regulären Ausdrücken wirklich elegant Probleme lösen kann. Daumen hoch dafür ;)

Vielleicht ein Denkanstoß: Zwar filterst Du bestimmte Dateitypen heraus per » FilesMatch«, aber möglicherweise ist das gar nicht nötig, denn weiter unten filterst Du erneut in der Direktive »RewriteRule«. Ich denke, dass Du die Klammer »FilesMatch...« daher gar nicht benötigst.

Desweiteren möchtest Du vielleicht Suchmaschinen gestatten, auf Deine Bilder zuzugreifen, damit zum Beispiel images.google.com Ergebnisse anzeigen darf, aber nicht fremde Blogs und Foren.

Daher erweitere ich den Regelsatz und lasse Google, Altavista, Cometsystems, SearchHippo und natürlich Apfeltalk explizit zu:

Code:
## Licht an:
RewriteEngine on

## Den Referer prüfen:
RewriteCond %{HTTP_REFERER} !^$

## meinedomain.de und www.meinedomain.de dürfen:
RewriteCond %{HTTP_REFERER} !^http://(www\.)?deinedomain\.de/ [NC]

## meinezweitdomain.de und www.meinezweitdomain.de natürlich auch:
RewriteCond %{HTTP_REFERER} !^http://(www\.)?meinezweitdomain\.de/ [NC]

## Google tritt ein, bring Besucher herein:
RewriteCond %{HTTP_REFERER} !^http://216\.239\.(3[2-9]?[45][0-9]?6[0-3])\..*(www)?meinedomain\.de [NC]
RewriteCond %{HTTP_REFERER} !^http://216\.239\.(3[2-9]?[45][0-9]?6[0-3])\..*(www)? meinezweitdomain\.de [NC]

## Und die anderen Suchdienste...
RewriteCond %{HTTP_REFERER} !^http://babel.altavista.com/.*(www)? meinedomain\.de [NC]
RewriteCond %{HTTP_REFERER} !^http://babel.altavista.com/.*(www)? meinezweitdomain\.de [NC]
RewriteCond %{HTTP_REFERER} !^http://216\.243\.113\.1/cgi/
RewriteCond %{HTTP_REFERER} !^http://search.*\.cometsystems\.com/search.*(www)? meinedomain\.de [NC]
RewriteCond %{HTTP_REFERER} !^http://search.*\.cometsystems\.com/search.*(www)? meinezweitdomain\.de [NC]
RewriteCond %{HTTP_REFERER} !^http://.*searchhippo\.com.*(www)?meinedomain\.de [NC]
RewriteCond %{HTTP_REFERER} !^http://.*searchhippo\.com.*(www)? meinezweitdomain\.de [NC]

## Apfeltalk darf meine Bilder klauen, 
## ... egal ob per Domain oder per IP-Adresse angesprochen:
RewriteCond %{HTTP_REFERER} !^http://(www\.)?apfeltalk\.de/ [NC]
RewriteCond %{HTTP_REFERER} !^http://87\.119\.200\.74/ [NC]

## Traffic thieves, be gone...
RewriteCond %{REQUEST_FILENAME} !dieb.jpg$ 
RewriteCond %{REQUEST_FILENAME} !imgdieb.php$
RewriteRule .*\.(gif|jpe?g|png|bmp|pdf|zip|rar|mp3|js)$ http://www. deinedomain.com/imgdieb.php [NC,R,L]

Die Forumssoftware fügt wild Leerzeichen ein... bitte Vorsicht beim Kopieren!
 
  • Like
Reaktionen: 1 Person