1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen
  2. Unsere jährliche Weihnachts-Banner-Aktion hat begonnen! Wir freuen uns auf viele, viele kreative Vorschläge.
    Mehr dazu könnt Ihr hier nachlesen: Weihnachtsbanner 2016

    Information ausblenden

Script: verlinken von Bildern verhindern

Dieses Thema im Forum "Web-Programmierung" wurde erstellt von .holger, 29.05.07.

  1. .holger

    .holger Geflammter Kardinal

    Dabei seit:
    13.09.04
    Beiträge:
    9.117
    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.
     
    #1 .holger, 29.05.07
    Zuletzt bearbeitet: 30.05.07
    1 Person gefällt das.
  2. tjp

    tjp Baldwins roter Pepping

    Dabei seit:
    07.07.04
    Beiträge:
    3.246
    Das einzige was wirklich funktioniert, ist es dynamische URLs für jedes Bild zu erzeugen.
     
  3. .holger

    .holger Geflammter Kardinal

    Dabei seit:
    13.09.04
    Beiträge:
    9.117
    kommt drauf an, was man erreichen will. ;)
     
  4. MrNase

    MrNase Champagner Reinette

    Dabei seit:
    11.01.05
    Beiträge:
    2.643
    Was haben denn die Sternchen im Code für eine tolle Funktion? ;)
     
  5. .holger

    .holger Geflammter Kardinal

    Dabei seit:
    13.09.04
    Beiträge:
    9.117
    verdammt, wo kommen die denn her?
     
  6. Hilarious

    Hilarious Gelbe Schleswiger Reinette

    Dabei seit:
    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!
     
    1 Person gefällt das.

Diese Seite empfehlen