Schutz von Downloads (Teil1)

Schutz vor ungerechtfertigte Zugriffen bei Downloads

Dieser Artikel nimmt das Thema des Linkshrinks nochmals auf und will Ihnen zeigen, wie sie Ihre Downloads, die ja vielleicht kostenpflichtig sind, vor ungerechtfertigtem Download schützen können.

In den 2 Artikeln über Linkshrinks haben Sie gelesen, wie Sie mit kurzen Links doch einiges verschleiern können. Im Nachtrag haben Sie eine Methode kennen gelernt, wie Sie den Aufruf über Parameter in der URL absichern können, so dass keiner das eBook oder Ihr Produkt einfach so downloaden kann.

Lage der Downloaddateien

Fall 1

Betrachten Sie Ihren Webspace, so haben Sie ein vom Hoster vorgegebenes Verzeichnis der Art localhost/xyz/username/
In diesem Verzeichnis können Sie beliebig viele weitere Verzeichnisse anlegen.

Irgendwo haben Sie festgelegt, dass Ihre Webseite mit einem Verzeichnis localhost/xyz/username/MyDomain1 arbeiten soll. Alle Verzeichnisse unterhalb dieses Verzeichnisses sind über die URL adressierbar. d.h. Sie können im Browser aufrufen
http://www.MyDomain.de/PDF/MyProdukt.pdf

Das ist die Gefahr! Sie können dieser Gefahr nicht begegnen, wenn Sie nur mit HTML arbeiten. Denn Links in HTML müssen immer auf eine Seite zeigen, die mit der URL adressierbar ist.

Nun kann in diesem Fall jemand auf die Idee kommen, die URL www.MyDomain.de/PDF aufzurufen. Bei guten Hostern erhält er, weil das Verzeichnis keine index.html hat, einen Fehler „Zugriff nicht erlaubt“.

Jetzt könnte er sich sagen, ich probier’s mal mit PDF/graitsseller.pdf! Jetzt erhält er entweder einen Fehler 404 „Seite nicht vorhanden“ oder er hat die Seite, wenn Sie diese so genannt haben. Da es eine pdf-Datei ist, kommt es auch gleich zum Download in seinem Browser, und er hat das eBook ohne Bezahlung!

Der Böse kann also durch Probieren sich Ihr eBook beschaffen. Mist, oder? 🙁

Fall 2

Oben schrieb ich, dass Ihr Webverzeichnis – auch Root (=Wurzel)-Verzeichnis – Ihres Webspaces localhost/xyz/username/ heißt. Hier könnten Sie doch auf die Idee kommen alle Ihre eBooks in ein Verzeichnis localhost/xyz/username/PDF/ zu speichern.

Wenn Sie jetzt probieren, mit http://www.MyDomain.de/PDF oder http://PDF in der URL, Ihr eBook aufzurufen, erleiden Sie Schiffbruch, denn Sie bekommen nur eine Fehlermeldung. Warum? Nun, es gibt keine Domain, die auf das Verzeichnis localhost/xyz/username/PDF/ zeigt.

Sie können über die URL nicht rankommen. Tja Sie nicht und sonst auch keiner. Toll, was?
Wollen Sie jetzt aber mit HTML einen Download anbieten, dann gibt es keinen möglichen Link der auf die PDF-Dateien zeigen könnte! Sie haben die eBooks so versteckt, dass keiner rankommt! Problem erledigt, oder?

Nicht ganz! Sie wollen das eBook doch verkaufen, also muss irgendjemand da rankommen! Jetzt kommt der Server ins Spiel und alles was Sie auf dem Server machen können.

Sie bauen im HTML-Code Ihrer Seite, die den Download machen soll einen Link ein, der jetzt ein Programm auf dem Server aufruft. Dieses Programm mit dem Namen ebook1.php sieht in etwa wie folgt aus

<?php
$afilename = DOWNLOAD_DIR.“ebook1.pdf“;
if( $_GET[‚aID‘] == “1″ && $_GET[‚prod‘] == “75″) {
   mail (………, $afilename);
}
?>

Ein ähnliches Script kennen Sie ja schon aus dem Artikel Dynamische Linkshrinks Nachtrag

Das Script hier – ist nicht ganz vollständig – prüft die übergebenen Parameter und wenn die stimmen, dann schickt es eine Mail an den Kunden, und als Mailanhang das eBook.
Aber wo liegt dieses eBook? Nach obigem Programm unter der DOWNLOAD_DIR.“ebook1.pdf“.

Hierbei ist DOWNLOAD_DIR eine PHP-Konstante, die irgendwo mal definiert wurde als bspw. define(„DOWNLOAD_DIR“,“localhost/xyz/username/PDF“);

In Ihrem HTML-Code setzen Sie den Link <a href=“http://www.MyDomain/ebook1.php?aID=1&prod=75″>Download eBook</a>

Natürlich muss dem dem Programm ebook1.php noch gesagt werden, an welche email-Adresse gesendet werden soll, das kann man auch über die Parameter des Links übergeben, normaler Weise kommt das aber aus der Datenbank da mit aID=1 der Kunde ja bekannt ist.

Hier geht es aber nicht um die Datenbank-Programmierung sondern nur um das Aufzeigen, dass das eBook physikalisch auf einem nicht adressierbaren Verzeichnis liegen kann.

Wollen Sie das Buch nicht per E-Mail versenden, dann müssen Sie an dieser Stelle einen Download anbieten. Doch dieser geht genauso einfach! Sie brauchen dazu aber PHP, sonst legen Sie alles wieder offen.

<?php
$afilename1 = „ebook1.pdf“;
$afilename2 = DOWNLOAD_DIR.$afilename1;
if( $_GET[‚aID‘] == “1″ && $_GET[‚prod‘] == “75″) {
   header(‚Content-type: application/x-octet-stream‘);
   header(‚Content-disposition: attachment; filename=‘ .$afilename1);
   readfile($afilename2);
   exit;
}
?>

Jetzt läd das Programm das eBook herunter in dem Downloaddialog des Servers sehen Sie nur den Dateinamen ebook1.pdf aber nicht auf welchem Verzeichnis es liegt.
Mit viel Geduld könnte man sowas auch in HTML hinbekommen, doch dann stehen die Dateinamen wieder im Quelltext der HTML-Datei und nichts ist gewonnen. Deshalb die einfachen PHP-Anweisungen, und schon klappt es!

Fazit

Sie sehen also, dass man schon den Download verstecken kann. Dazu muss man sich nicht teurere Programme kaufen. Was haben wir jetzt abgedeckt?

  1. Wir haben ein nicht adressierbares Verzeichnis gewählt.
  2. Wir haben den Namen des Verzeichnisses versteckt.
  3. Wir haben eine Möglichkeit für einen Download aus einer Seite geschaffen, der relativ sicher ist.

Was aber haben Sie nicht?

  1. Jeder sieht den Link mit „?aID=1&prod=75“! Das ist unsicher!
  2. Auch über den Linkshrink, können wir die Parameter nicht unsichtbar machen

Man könnte sich also noch überlegen, was man noch tun könnte. Das aber möchte ich Ihnen im nächsten Teil darstellen.

Gruß
Bernd Klüppelberg

Bisher gibt es keinen Kommentar. Schreiben Sie einen Kommentar!

Schreibe einen Kommentar