Schutz von Downloads (Teil2)

Schutz vor ungerechtfertigte Zugriffen bei Downloads (Teil 2)

Im Teil 1 der Artikelserie haben Sie eine Methode gelesen, die einen einfachen Schutz für Download-Dateien vornimmt. Es blieben aber noch einige Fragen offen! Einige „Sicherheitslücken“ müssen noch geschlossen werden!

Wenn Sie sich hier im Blog beispielsweise den Gratisseller herunterladen wollen, so bekommen Sie nicht mit, wo denn dieser gespeichert ist. Auch wenn Sie sich den Quelltext der Seite anschauen, bekommen Sie nur mit, dass es da ein Link in dem Formular gibt, der

<form action=“http://gs.sybeklue.de/A677287823.php“ method=“post“>

heißt. Rufen Sie das Programm auf, dann erhalten Sie den Fehler Err002: „ADMIN-Error: Die falsche Artikelnummer im Formular angegeben“.

Was wissen Sie?

Es gibt ein Programm, dass das Formular startet, wenn es abgesendet wird. Sie sehen in den weiteren Parametern des Programms noch die Zeile

<input name=“titleid“ type=“hidden“ value=“GS01″ />

Sie könnten nun ein Formular definieren, dass die gleichen Variablen setzt und dies absenden. Damit können Sie sich zwar in meine Liste eintragen, und erhalten eine Mail mit dem Optin1 „Bestätigung Ihrer Email-Adresse“ für genau dieses Produkt.
In dieser Mail sehen Sie jetzt eine Linkadresse,

<http://gs.sybeklue.de/A677287823.php?a=YWNjPXk7aWQ9MTtwcm9kPUdTMDE7YT00NzEx

Diesen Link hätte ich auch shrinken können.

In dieser Hinsicht ist alles offen. Sie wissen und können mit ein wenig HTML, alles nachvollziehen!
Richtig der eigentliche Schutz liegt einmal in der Angabe GS01 und dem Parameter ?a= im Link aus der Mail!

Führen Sie aber nun den Link aus der Mail aus, dann wird intern zwar das Programm A677287823.php gerufen, Es wird aber auf dem Server eine Weiterleitung auf eine Seite im Blog ausgeführt. Was intern geschieht, wird verborgen. Wäre nun der gratisseller kostenpflichtig, würde Sie das Programm A677287823.php an PayPal weiterleiten. Sie sehen davon nur die URL von der PayPal-Schnittstelle. Auch wenn Sie sich diese PayPal-Seite im Quelltext anschauen würden, sind dort die Adressen und Parameter so verschlüsselt, dass Sie nicht rausbekommen, wer denn den Verkauf tätigt.

Egal, ob Sie nun wissen, wie Sie das Gratisprodukt herunterladen können, Sie wissen nicht wo sie im Webspace liegt.

Wie ist das gemacht

Ich könnte jetzt sagen, laden Sie sich den gratisseller herunter, installieren Sie ihn, und Sie sehen, wie man das machen kann. Das ist sicherlich eine Möglichkeit, da Sie ja dann den Quelltext des Programms haben.

Im Artikel Dynamische Linkshrinks Nachtrag habe ich gezeigt, wie man eine Weiterleitung in PHP programmiert. Ähnliches wird im gratisseller auch gemacht.

Das ganze Geheimnis liegt in der Tatsache, dass PHP auf dem Server läuft und nicht in Ihrem Browser (also bei Ihnen als Client)! Das PHP-Programm, das über den Mail-Link aufgerufen wird, erhält im Parameter ?a=YWNjPXk7aWQ9MTtwcm9kPU897dTMDE7YT00NzEx alle Informationen die es braucht um die Auslieferung des Produktes durchzuführen.

Und genau das macht das Script auf dem Server.

  1. Es analysiert den Parameter!
  2. Es weiß damit, was es tun soll!
  3. Es holt sich alle dazu gespeicherten Informationen aus seiner Datenbank
  4. Es baut daraus eine Mail zusammen
  5. Es liest die Datei mit dem Download
  6. Stellt diese Datei als Anhang in die Mail
  7. Es sendet Die Mail

Nehmen Sie an, Sie können PHP, und Sie sagen sich, dieser Parameter ?a sieht so aus, als ob er durch eine PHP-Codierungs-Funktion erzeugt wurde, und versuchen nun mit PHP, diese Codierung zu dekodieren. Dann haben Sie schon einige Informationen. Was aber fangen Sie mit diesen an, wenn der dekodierte Parameter nicht alles gleich offenlegt?
Angenommen Sie sehen da nach der Dekodierung nur „x1,y22,a2“? Was ist nun was?

Es gibt noch einen fieseren Trick, nämlich in den Parameter ein Datum einzuschmuggeln, das genau das Datum als sog. UNIX-Timestamp – also ein Datum der verflossenen Sekunden seit einem Basisdatum – beinhaltet, wann Ihre OptIn1-Anforderung in der Datenbank gespeichert wurde? Nun dann können Sie, glaube ich, aufgeben, denn Sie wissen ohne Programmquellcode nicht, wie das Programm den Timestamp behandelt!

Sie können beliebig viele derartige Dinge einbauen. Alleine der Trick hier nicht den Schlüsselbegriff des Produktes sondern die Satznummer in der Datenbank anzugeben, wird einiges schützen. Denn wer weiß denn, in welcher Reihenfolge in der Datenbank Sie ihre Produkte gespeichert haben? Sind die Nummern fortlaufend?

Noch ein fieser Trick! Sie speichern in der Datenbank Ihr Produkt zwar über ein Kürzel eindeutig ab, wählen aber über eine PHP-Funktion z.B. uniqid einen eindeutigen Schlüssel zusätzlich dazu, dann erhalten Sie eine Zeichenkette der Länge 13, die Sie im ?a-Parameter zusätzlich verschlüsseln können. Diesen Schlüssel stellen Sie auch in die Datenbank und keiner blickt mehr durch!

Auch wenn Sie den obigen Link shrinken, kann jemand auf die Idee kommen, diesen sich über tinyshrink entschlüsseln zu lassen. Was aber fängt er damit an, wie kommt er auf das nächste Verkaufsprodukt, das er ja unbezahlt haben will?

Sie sehen, es gibt viele Möglichkeiten, und da all das auf dem Server passiert, nicht im Client, kommt auch keiner drauf, was Sie getan haben. Auch wenn er die gleiche Verkaufssoftware betreibt und sich den Quellcode anschauen kann, ist es ihm unmöglich, herauszufinden, welche Parameter und Variablen Sie jetzt gerade benutzen.

Leider ist diese Art des Schutzes nicht unbedingt verbreitet. So habe ich selbst schon, weil ich sah, das jemand dieses oder jenes Programm zum Verkauf benutzte, keine Veränderungen in den Einstellungen vollzogen hat, völlig offene Verkaufspages gesehen.

Mit den gleichen Tricks arbeiten auch die käuflichen Schutzprogramme, die aber einen so ausgefallenen Schutz wie oben mit der uniqid nicht aufbauen können. Da müssen Sie schon selbst Hand anlegen und kreativ sein. Aber mit ein wenig PHP-Kenntnissen, vor allem bei der Datumsfunktion, können Sie das auch!

Ich hoffe aber, dass Sie nun gleich darangehen und prüfen, ob Sie das Admin-Passwort Ihrer Verkaufssoftware geändert haben, dass die das Installationsverzeichnis der Verkaufssoftware gelöscht oder wenigsten im Namen verändert haben, sonst steht wirklich Tür und Tor offen.

Gruß
Bernd Klüppelberg

Bisher gibt es keinen Kommentar. Schreiben Sie einen Kommentar!

Schreibe einen Kommentar