Sven Rautenberg: include () Problem

Beitrag lesen

Moin!

Danke erstmal, werde das mit eval() mal testen. Es geht nur darum das diese Zeile Daten enthält die keiner mitbekommen soll und mein Kapital sind damit ich diese Scripte vertreiben kann.

Mit anderen Worten: Du willst auf _deinem_ Server zentral Benutzerlizenzen verwalten von einer PHP-Applikation, die an Kunden verkauft wird.

Vergiß es! Das wird niemals wirklich funktionieren.

Gegen diese Methode gibt es reichlich Angriffs- und Umgehungsmethoden. Denn du lieferst ja sicherlich PHP-Klartext aus. Also steht auch deine Funktion drin, die die Lizenzdaten nachlädt. Und die kann man ganz simpel ausbauen. Oder die Daten manuell einfügen, indem die Nachfrage nach den Lizenzdaten einfach durch den dadurch gelieferten Code ersetzt wird.

Habe leider nichts gefunden um diese Zeile zu verschlüsseln und deshalb muß ich einen anderen Weg finden.

Auch Verschlüsseln der Zeile wird nichts bringen. Auf dem Kundenserver mußt du ja schließlich den gesamten Code inkl. Schlüssel zum Entschlüsseln der Daten mitliefern.

Deine Aufgabenstellung ist im Grunde genommen genauso zu bewerten, wie die Aufgabenstellung, mit Javascript im Browser einen _sicheren_ Passwortzugang zu realisieren. Diese Aufgabe ist einfach nicht lösbar.

Die Tatsache, dass dir die Mechanismen eines include() über HTTP nicht wirklich klar sind, zeigt mir jedenfalls, dass du dir keinen wirklich komplizierten Lizenzschlüsselmechanismus ausdenken wirst können.

Du solltest stattdessen vielleicht eher die subtile Methode anwenden: Gib jedem Kunden eine individuelle Version deiner Software mit einer entsprechenden Lizenznummer. Diese Lizenznummer mußt du subtil in die HTML-Ausgabe deines Skriptes schmuggeln - und zwar nicht irgendwie am Stück, sondern schön unauffällig verteilt. Beispielsweise bietet es sich an, einen CSS-<style>-Block in jeder Seite zu definieren, und dort Teile der Nummer in einer ungenutzten Klassendefinition unterzubringen, beispielsweise als Farbcode der Hintergrundfarbe. Oder (noch besser) als Farbcode eines 0px-Borders (weil: Sieht ja niemand). Oder du definierst zuerst einen margin allgemein, und dann nochmal margin-left, -right, etc. extra. Im überflüssigen margin stehen dann ebenfalls Lizenzdaten drin. Oder du benutzt die Klassen- und ID-Namen selbst für Teile der Lizenznummer - die dürfen dann sogar verwendet werden.

Wenn du die Lizenznummer auf diese Weise subtil verteilst, fällt sie viel weniger auf. Damit du keine Aufmerksamkeit erregst, muß diese Nummer allerdings statisch in den PHP-Skripten eingebaut sein, es darf dort keine Funktion "get_partof_license()" geben. Dazu mußt du die Teile, die subtile Lizenznummern enthalten sollen, dynamisch als Datei generieren und dann ausliefern.

Der Effekt ist dann, dass du die Weitergabe deiner Software anhand der subtilen Lizenznummer sehr leicht beweisen kannst, wenn du darauf stößt. Denn es dürfte unwahrscheinlich sein, dass sich jemand in Unkenntnis der subtilen Lizenznummern die Mühe macht, den gesamten Code durchzuackern.

Natürlich mußt du auf eine weitergegebene Software selber stoßen. Aber deine bisherige Vorgehensweise arbeitet sehr auffällig, indem dein Server kontaktiert wird. Das wird im Zweifel auffallen und leicht entfernt werden können.

- Sven Rautenberg

--
SELFTREFFEN 2003 - http://selftreffen.kuemmi.ch/
ss:) zu:) ls:[ fo:} de:] va:) ch:] sh:) n4:# rl:| br:< js:| ie:( fl:( mo:|