
Bilderklau verhindern
| NEU! Lassen Sie nach Sündern suchen, die Ihren
Server verwenden. Weiter>> |
Vorwort
Einige WonderBook-Mitglieder haben berichtet, dass ihre Bilder
auf fremden Homepages bzw. Servern verwendet werden. Jedoch wurden
diese Bilder nicht einfach auf den fremden Server kopiert sondern
werden direkt im HTML-Code verlinkt, weshalb das Bild trotzdem vom
originalen Server geladen wird, auch wenn es auf einer fremden Homepage
sichtbar ist. Man nennt dies auch Traffic-Klau da dadurch auf dem
Server entsprechend mehr Zugriffe entstehen. Da Bilder eine relativ
grosse Datenmenge benötigen kann das Trafficvolumen des Servers
so schnell steigen und Traffic kostet Geld.
Eines vorweg: Es gibt keinen 100%igen Schutz vor Bilderklau. Die
Natur des WWW bietet keinen richtigen Schutz davor. Es gibt aber
die Möglichkeit, einen solchen unerwünschten Versuch zu
verhindern, wenn der Browser den Referer mitschickt (was er in der
Regel macht). Der Referer gibt die Seite an, auf welcher das Bild
verwendet wird. Stimmt der Host der Adresse nicht mit der eigenen
Website überein gilt dies als externe Einbindung. Einige Server
(vor allem Free-Angebote) verhindern solche Zugriffe sowieso. Leider
beeinträchtigt dies
auch unser Postkarten-System, da auch hier das Bild extern eingebunden
wird.
Es ist daher notwendig eine Sperre einzubauen, welche nur den eigenen
Server oder die Domains "www.guweb.com" oder
"guweb.com" zulässt.
Möglichkeit A: .htaccess
Eine Möglichkeit auf Basis der .htaccess Konfigurationsdatei
(Apache Webserver) ist bei Dr.
Web beschrieben. Allerdings muss der Server hier das Modul "mod_rewrite"
geladen haben. Zusätzlich müssen auch die Domains www.guweb.com
und guweb.com erlaubt werden.
Beispiel:
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?eigenedomain.de/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://(www\.)?guweb.com/.*$ [NC]
RewriteRule \.(gif|jpg)$ - [F]
|
Hier muss natürlich die eigene Domain eingesetzt werden.
Eine Möglichkeit auf Basis dieser Konfigurationsdatei aber
ohne mod_rewrite ist uns leider nicht bekannt.
Möglichkeit B: Mittels PHP
Hat der Webserver das Modul mod_rewrite nicht installiert oder
handelt es sich gar um einen anderen Webserver als Apache, kann
man auch PHP für diese Aufgabe verwenden. Diese Skriptsprache
ist auf den meisten Webservern bereis installiert.
Das folgende Skript wird verwendet um alle Zugriffe auf das Bild
zu überprüfen:
<?php
// Eigene Domain (ohne "www." oder dergleichen)
$selfdomain = "eigenedomain.de";
// Verzeichnis der Bilder (kein Slash am Ende!)
// Relativ zum Verzeichnis dieses PHP-Skriptes
$imgdir = "bilder";
// Zusätzlich erlaubte Domain
$allowdomain = "guweb.com";
$selfdomain = strtoupper($selfdomain);
$allowdomain = strtoupper($allowdomain);
$ref = strtoupper($HTTP_REFERER);
// protokoll entfernen
$ref = str_replace("HTTP://", "", $ref);
// domain extrahieren
if (strpos($ref, "/")) $ref = substr($ref, 0, strpos($ref, "/"));
if (($ref=="") || (strpos($ref, $allowdomain)) || (strpos($ref, $selfdomain))) {
$fn = $PATH_INFO;
if ((strpos($fn, "../")) || (strpos($fn, "..\\")))
{
echo "Zugriffsverletzung"; // Server schützen
} else readfile($imgdir.$fn); // Datei ausgeben
} else {
echo "Kein Zugriff";
}
?>
|
Das Skript wird in einer Datei mit Endung .php auf dem
Server gespeichert. Nehmen wir an, das Skript befindet sich unter
folgender URL:
http://www.natur-postkarten.de/postkarte.php.
Als erstes muss die Domain (natur-postkarten.de) im Skript
geändert werden (rot markiert). Die Bilder werden in einem
eigenen, "geheimen" Verzeichnis gespeichert, beispielsweise
"pc12345". Dies muss ebenfalls im rot hervorgehobenen
Code angepasst werden (Bilderverzeichnis). Das Verzeichnis sollte
"geheim" bleiben, damit nicht das PHP-Skript umgangen
wird. Ein Passwortschutz ist auch möglich, aber nicht unbedingt
notwendig. Die Bilder befinden sich beim Beispiel unter der URL
http://www.natur-postkarten.de/pc12345/...
Sie werden aber nun über das PHP-Skript auf folgende Weise
abgerufen:
http://www.natur-postkarten.de/postkarte.php/blume.jpg
Dies hat den selben Effekt, als wenn das Bild von der URL
http://www.natur-postkarten.de/pc12345/blume.jpg
Es sind auch Verzeichnisstrukturen möglich:
http://www.natur-postkarten.de/postkarte.php/tiere/fuchs.jpg
http://www.natur-postkarten.de/postkarte.php/tiere/igel.jpg
http://www.natur-postkarten.de/postkarte.php/natur/himmel/wolken.gif
aufgerufen worden wäre, nur eben mit der zusätzlichen
Kontrolle. Da ein "Dieb" das pc12345-Verzeichnis
nicht kennt oder ev. gar keinen Zugriff darauf hat kann er das PHP-Skript
nicht umgehen und ein Bilderklau wird so verhindert.
Weitere Möglichkeiten
Dieses PHP-Skript kann man sicher noch erweitern und verbessern.
So könnte z.B. statt der Ausgabe "Kein Zugriff" auch
ein spezielles Bild ausgegeben werden, das Skript kann abgeblockte
Zugriffe protokollieren und und und...
Problemlose Umstellung
Soll ein Postkarten-Account nachträglich mit der PHP-Lösung
gegen Trafficklau geschützt werden gilt es zu beachten, dass
bereits verschickte Postkarten möglichst weiterhin abrufbar
sein sollten. Wurde ein Postkarten-Account richtig konfiguriert,
dann wurde im Menü "Bilderliste" ein Basisverzeichnis
für alle Bilder angegeben und für die Bilder selbst wird
nur der Dateiname angegeben bzw. es wird eine relative Pfadangabe
verwendet. Ist dies der Fall, dann gestaltet sich die Umstellung
völlig problemlos denn es muss nur die Angabe für das
Basisverzeichnis geändert werden. Hier muss einfach die URL
des PHP-Skriptes angegeben werden:
http://www.natur-postkarten.de/postkarte.php
Natürlich ist auch hier wieder eine genauere Verzeichnisangabe
möglich:
http://www.natur-postkarten.de/postkarte.php/vorschau
http://www.natur-postkarten.de/postkarte.php/gross
Änderungen am Basisverzeichnis wirken sich sofort auf alle
Postkarten aus, d.h. auch auf alle bereits verschickten Postkarten.
Somit merken Ihre Besucher nichts von der Umstellung.
Wurde hingegen für jedes Bild immer die absolute URL angegeben
(was auch möglich ist), dann kann der Server die URL nicht
selbständig anpassen. Werden die URLs ungültig (weil die
Bilder in ein anderes Verzeichnis gelegt werden), dann können
alle bereits verschickten Postkarten leider nicht angezeigt werden
(zumindest nicht das Bild).
Möglichkeit C: Verzeichniswechsel
Es gibt eine weitere Möglichkeit, die keine besonderen technischen
Hilfsmittel erfordert aber dafür ständig gepflegt werden
muss.
Dazu ist es zunächst notwendig, dass im Menü "Bilderliste"
ein Basisverzeichnis für die Bilder angegeben ist (egal, ob
automatisch erstellte oder eigene Liste). Zusätzlich müssen
alle Bilder nur mit dem Dateinamen (hund.jpg) oder mittels
relativer Verzeichnisangabe (tiere/hund.jpg) vorhanden
sein. Sind die Bilder absolut angegeben (http://www.server.de/bilder/hund.jpg),
dann funktioniert diese Methode nicht.
Ist diese Bedingung gegeben kann nun so vorgegangen werden:
Nehmen wir an, die Bilder sind im Basisverzeichnis http://www.server.de/bilder
gespeichert. Man könnte nun dieses Basisverzeichnis in kurzen
Abständen (täglich, wöchentlich) umbenennen, etwa
auf folgende Weise:
http://www.server.de/bilder/ab135
http://www.server.de/bilder/moonlight
http://www.server.de/bilder/allesmein
http://www.server.de/bilder/10294756
usw.
Wichtig ist, dass die Änderungen keinem Schema folgen denn
werden nun Bilder auf einem fremden Server eingebunden, werden die
URLs mit der nächsten Umbenennung ungültig und der ("stehlende")
Webmaster müsste jedesmal die URLs sämtlicher Bilder anpassen
(was normalerweise zu viel Aufwand ist).
Absolut wichtig ist aber, dass das umbenannte Basisverzeichnis
im Postkarten-Account angepasst wird! Wird dies versäumt, dann
können die Bilder nicht angezeigt werden. Daher sollten diese
beiden Schritte (Umbennen, Postkarten anpassen) immer so schnell
wie möglich hintereinander erledigt werden.
Was nicht funktioniert...
Nicht möglich ist der Schutz der Bilder mit einem einfachen
Passwortschutz. Sobald es notwendig ist, dass zum Ansehen der Bilder
ein Passwort einzugeben funktionieren die Postkarten nicht mehr
(auch, wenn das Passwort öffentlich ist). Wird eine Postkarte
abgeholt, muss dieses Passwort nämlich wieder eingegeben werden.
Dem Empfänger der Postkarte ist das Passwort aber in der Regel
nicht bekannt und er wird sich wundern, welches Passwort er eingeben
soll....
Testen
Es gibt zwei Möglichkeiten den Schutz zu testen:
- Sie bauen das Bild in eine HTML Seite ein, welche sich auf einem
anderen Server befindet (Achtung! Hier könnte der Browser-Cache
das Testergebnis verfälschen).
- Sie verwenden unseren Server-Test.
Dieser ist eigentlich dafür gedacht um Wonderbook-taugliche
Server zu prüfen. Bei einem Server mit korrekt konfigurierten
Trafficklau-Schutz sollte der Test ein positives Ergebnis zeigen
und zusätzlich die Meldung "Trafficklau-Schutz
erkannt!" bringen.
Dieser Test ist für die Möglichkeit C natürlich
nicht notwendig.
Anmerkung
Die hier beschriebenen Lösungen verhindern nur das externe
Einbinden der eigenen Bilder auf fremden Servern (mit Ausnahme von
guweb.com). Es ist aber trotzdem möglich, das Bild
zu kopieren! Eine Möglichkeit eines Kopierschutzes
wird auf einer anderen Seite beschrieben.
Auch ist zu bedenken, dass dies kein Schutz gegen Diebe
ist, welche die Bilder in eigenen Postkarten-Accounts verwenden,
da die Domain guweb.com vom Bilderklau-Schutz zwangsläufig
verschont bleibt. Sollten auf diese Bilder geklaut werden, einfach
beim Wonderbook-Support
melden.
Verwandte Themen
Hilfe-Übersicht allgemein
| Hilfe-Übersicht Postkarten
|