Schutz über Perl-Script
Da nur ca. 50% aller Web-Server über Apache laufen, der weitaus größte Anteil aber Perl-Scripts ausführen können, haben wir ein kleine Perl-Anwendung geschrieben, welche Bilder nur an vordefinierte Referrer ausliefert.
Die Lösung "ImageGuard" kann jeder anwenden, auf dessen Web- Server ein Perl-Interpreter läuft (im Allgemeinen alle mit cgi-bin-Verzeichnis) und dürfte damit weit mehr Seitenbetreiber abdecken als die .htaccess-Lösung.
Das Script funktioniert so, dass es genau dann zum Einsatz kommt, wenn in einer HTML-Seite eine Grafik anzuzeigen ist. Einfaches Beispiel:
Eine html-Seite der Form
<html>
<head>
<title>
Test
</title>
</head>
<body>
Dies ist ein Test: <img src="images/test.gif">
</body>
</html>
ist durch folgende Variante zu ersetzen:
<html>
<head>
<title>
Test
</title>
</head>
<body>
Dies ist ein Test: <img src="../cgi-bin/image.pl?test.gif">
</body>
</html>
Damit sind die Bild-Verweise in allen zu schützenden Dokumenten mit der Script-Variante zu ersetzen. Normalerweise holt der Web-Server einfach die zum passenden Pfad gehörende Datei und liefert sie an den Broswer aus. Im geschützten Fall übernimmt diese Aufgabe das Perl-Script.
Wie funktioniert das Ganze?
Variante 1 liefert das anzuzeigende Bild an jeden Referrer aus, somit auch an externe Seiten außerhalb des eigenen Web-Angebotes. Das Bild wird geklaut, weil es ungeschützt ist.
Variante 2 liefert das richtige Bild nur dann zurück, wenn die aufrufende Seite zu einem Satz gültiger Seiten gehört, für welche die Anzeige erlaubt wurde.
Um das Script zum Laufen zu kriegen, sind einige wenige Anpassungen im Bereich "Benutzerdefinierbare Variablen" duchzuführen:
1. Zeile 1:
Pfad für Perl-Interpreter setzen (nur für *ix-Systeme notwendig) #!/usr/bin/perl -w
2. Zeile 28:
Pfad für Bilddateien (mit abschließendem Slash) setzen
$ImgPath = '/var/www/html/images/';
Dies ist der absolute Pfad für die anzuzeigenden Bilder (keine URL)
*ix: Oft irgendwas mit /var/www/html/images/
IIS: Oft irgendwas mit D:/users/domain/html/images/
3. Zeile 31:
URLs für gültige Hosts/Aufrufer (Referrer) setzen
@Referer = ( 'ihredomain.com', 'localhost', '127.0.0.1' );
4. Zeile 36:
Anzuzeigendes Fehlerbild für ungültige Hosts (muss im definierten Bildverzeichnis liegen, sollte aus Traffic-Gründen klein gewählt werden) festlegen
$ErrImg = 'link_error.gif';
5. Zeile 41:
Logging-Verhalten des Scripts festlegen (0: Kein Logging,
1: Fehler-Logging (nur unrechtmäßige Zugriffe werden mitgeloggt, 2:
Debug-Modus (alle Zugriffe werden mitgeloggt))
$DoLog = 1;
Modus 2 erzeugt bei traffic-intensiven Seiten ein großes Log-File!
6. Zeile 45:
Pfad für Log-File
$LogFile = '/var/www/html/cgi-bin/image.log';
*ix: Oft irgendwas mit /var/www/html/cgi-bin/image.log
IIS: Oft irgendwas mit D:/users/domain/html/cgi-bin/image.log
Wird nur benutzt, wenn $doLog auf 1 oder 2 gesetzt ist. Es muss darauf geachtet werden, dass das Script Schreibrechte im Verzeichnis für das Log-File besitzt (cgi-bin-Verzeichnis bietet sich dafür an).
7. Script in das cgi-bin-Verzeichnis des Servers laden
Zugriffs-Rechte setzen (nur *ix):
chmod 755
8. Betroffene HTML-Dateien anpassen.
Durch das Setzen von wenigen benutzerdefinierbaren Variablen kann das Script leicht auf eigenen Bedürfnisse angepasst werden. Das Script ist hier zu downloaden.
Autor: Klaus
Diese Antworten reichen Dir noch nicht? Dann nutze unseren Email-Support 
Diese Seite drucken
|