home hilfe faq anmelden login kontakt


 guweb.com / postkarten






 HAUPTSEITE

 SUPPORT-FORUM

 GÄSTEBUCH

 ANMELDEN

 LOGIN

 KONTAKT

 HILFE

 FAQ



Partner:

sedo.de, Domainauktionen

INDUNET GmbH - Industrial Information Technology





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