Jul 12 2006

PHP Quellcodes schützen mit Ioncube oder Zend Encoder

veröffentlicht in Kategorie WebWork  

Ein Problem, das uns immer wieder vor dem Einsatz von PHP im professionellen Einsatz im Agenturumfeld zurückschrecken lies, war die Tatsache, dass in PHP geschriebene Anwendungen immer als mehr oder weniger frei zuänglicher Quellcode ausgeliefert werden mussten. In der klassischen Variante werden PHP Quelltexte frei lesbar und vom Kunden modifizierbar auf deren Homepage abgelegt. Jeder, der FTP Zugang auf den entsprechenden Host hat, ist so in der Lage, die Quelltexte der Anwendungen nicht nur einzusehen, sondern auch beliebig zu modifizieren. Das mag vielleicht gut und recht sein, wenn man sowieso Open Source Lösungen anbieten will, hat aber für den kommerziellen Einsatz einen eklatanten Nachteil:
PHP ist eine Scriptsprache, in der die frei einsehbaren Quellcodes (eingebettet in einer HTML Seite bzw. verlinkten PHP Dateien) einer Anwendung zu Laufzeit interpretiert werden. Das heisst also in der Praxis: Ihre PHP Anwendung ist zu jeder Zeit voll einsehbar. Um eine klassische PHP Anwendungen auf dem Webserver installieren zu können,  muss der komplette Quellcode zu Verfügung gestellten werden. Ein kommerzieller Vertrieb von PHP Anwendungen kommt deshalb kaum in Frage.

Aber auch im Hosting Umfeld ist die Sache problematisch, jeder, der per FTP auf den Host zugreifen kann, auf dem Ihre PHP Anwendung installiert ist, kann sich an den Quellcodes bedienen. Ein weiteres Problem sind experimentierfreudige Kunden, welche eigenmächtig Änderungen oder “Verbesserungen” an Ihrer PHP Anwendung vornehmen und dann im Problemfall Supportleistungen von Ihnen verlangen, weil nix mehr geht oder Probleme auftauchen. Auf Dauer war es mir dann irgendwann zu dumm, jedesmal die komplette Anwendung erst mal per WinDiff zu prüfen, ob nicht wieder mal jemand dran rum gefummelt hatte.

Die Lösung für all diese Problem heisst: Codierung der PHP Quellcodes. Die 2 bekanntesten und zuverlässigsten Lösungen dafür sind zum einen der Zend Encoder aus dem Hause Zend oder aber der Ioncube Encoder aus dem Hause Ioncube.

Beide Programme sind in der Lage, den PHP Quellcode sicher zu verschlüsseln und so vor neugierigen Blicken, Langfingern und Möchtegerne-Programmverbesserer zu schützen. Die Verschlüsselung ist irreversibel, ein Reverse Engineering oder die Rückverwandlung der verschlüsselten Dateien in lesbaren und bearbeitbaren Quellcodes ist nicht mehr möglich. Bei beiden Lösungen ist uns kein Fall bekannt, in dem die Verschlüsselung jemals geknackt wurde. Dies unterscheidet Zend Encoder und IonCube Encoder auch vor reinen “Obfuscating”-Lösungen, welche zwar das Lesen eines Quellcodes erschweren, aber eine Reverse-Entwicklung nicht verhindern können.

Die Funktionsweise der Encoder ist dabei wie folgt: der frei einsehbare Quellcode in ASCII Text einer PHP Anwendung wird zunächst compiliert und in ein binäres byte-code Interims Format umgewandelt und darüber hinaus mehrere Stufen der Verschlüsselung angewendet. Die beim Verschlüsselungsvorgang entstehenden Dateien sind nun nicht mehr einsehbar/modifizierbar, zuverlässig geschützt und plattformunabhängig einsetzbar. Nur diese codierten Dateien müssen an den Kunden weitergegeben werden, damit die PHP Anwendung eingerichtet und ausgeführt werden kann, die Quellcodes bleiben sicher bei Ihnen.

Weitere Vorteile von codierten PHP Anwendungen:

  • Durch die Verschlüsselung ergeben sich neben der generellen Möglichkeit, PHP Anwendungen kommerziell als “Closed Source” zu vertreiben auch ein ganz neues Lizenzmodelle für die von Ihnen entwickelten PHP Anwendungen: Verkauf des Produktes inkl. Quelltext an den Kunden oder aber Verkauf eines einfachen Nutzungsrechtes welches keine Quellcodes mehr beinhaltet. Je nach Encoder sind auch Modelle wie Zeitmodelle oder in der Useranzahl beschränkte Linzenzen möglich.
  • Die Ausführung der codierten PHP Programme erfolgt in der Regel schneller als nicht codierte PHP Programme. Das steigert die Performance und kann die Serverlast reduzieren.
  • Nachträgliche Änderungsversuche an den codierten Dateien sind nicht mehr möglich. Eine einmal installierte PHP Anwendung kann vom Kunden nicht mehr verschlimmbessert werden, jeder Versuch einer Änderung würde die jeweilige Datei unbrauchbar machen (die Datei muss dann nochmal aufgespielt werden). Auf diese Weise können Sie sicherstellen, dass Ihre Anwendung unverändert bleibt.
  • Vielleicht etwas zweifelhaft, aber nicht unwichtig in einer Branche, in der mit harten Bandagen gekämpft wird: Codierte PHP Anwendungen binden den Kunden an Sie und verhindern die unbefugte Nutzung durch Dritte. Nehmen Sie an, Sie erstellen für einen Kunden eine PHP Anwendung. Nach einiger Zeit nun will der Kunde mit dem gesamten Projekt zu Ihrer Konkurrenz wechseln. Die Frage, ob der Kunde nun berechtigt ist, die von Ihnen erstellten Quellcodes seiner neuen Agentur zur Weiterbearbeitung zu geben und wie Sie das verhindern können stellt sich erst gar nicht, wenn der Kunde nur ein reines Nutzungsrecht bezahlt hatte und somit nur die codierten Dateien, aber nie die Quellcodes erhalten hat. Der Wechsel zu einer anderen Agentur hieße dann, das die andere Agentur nicht einfach die von Ihnen geschaffene Lösung einheimsen kann.

Nachteile der Codierung:

  • Damit die so kodierten PHP Dateien auf dem Webserver auch wirklich ausgeführt werden können, muss das jeweils passende kostenlose PHP Erweiterungsmodul zur Ausführung der codierten Dateien auf dem WebServer vorhanden sein. Also entweder der Zend Optimizer, oder der Ioncube Loader.
    Wer Zugriff auf die PHP.INI seines Webserver hat, kann die Installation des Zend Optimizers bzw. Ioncube Loaders leicht selbst vornehmen. Aber auch Nutzer günstiger Shared Hosting Angebote ohne die Möglichkeit PHP Erweiterungen zu installieren können codierte PHP Anwendungen ausführen: sowohl der Zend Optimizer als auch der Ioncube Loader sind auf vielen Servern bereits vorinstalliert – Tendenz steigend – oder sie werden auf Anfrage vom Serverbetreiber dann nachinstalliert.
    Kann man aus welchen Gründen auch immer die entsprechende Erweiterung nicht auf seiner Homepage installieren (lassen), dann hat Ioncube übrigens deutlich die Nase vorne:  Unter Linux basierten Servern reicht es schon aus, wenn man den entsprechenden Loader einfach mit in das Hauptverzeichnis der PHP Anwendung kopiert – die Anwendung lädt falls notwendig den entsprechenden Loader automatisch nach. Zend untersützt dieses Nachladen bei Bedarf leider nicht.
  • Codierte PHP Dateien sind etwas zickig im Handling, so müssen die PHP Dateien von FTP Programmen im Binärmodus übertragen werden, damit die Datei nicht während der Übertragung beschädigt wird.
  • Der Preis. Beide Produkte sind kostenpflichtig und für Hobbyautoren nicht gerade billig, wobei der Preis des Ioncube Encoders in der Basisversion mit 199 USD deutlich unter dem Preis des Zend Encoders liegt, welcher in der günstigsten Variante als SmallBusinessEdition mir 395,- USD pro Jahr schon deutlich größere Löcher in das Budget kleiner Entwickler reisst. PHP Programmierer mit knappem Budget sollten mal schnell unseren 2. Artikel zum Thema PHP codiert durchlesen, dort stellen wir den Ioncube Online Encoder vor, mit dem man sehr preiswert, oft unter 1 Euro, seine Projekte verschlüsseln lassen kann.

No responses yet

Trackback URI | Comments RSS

Kommentar dazu? (Geht anonym und ganz ohne Anmeldung)