HOWTO · PHP
Die 8 besten PHP-Code-Obfuscatoren
Dieses Tutorial demonstriert die acht besten Code-Obfuscatoren in PHP.
Auf dieser Seite
Die PHP-Obfuskierung macht Quellcode schwerer einsehbar, indem sie ihn in eine weniger lesbare Form umschreibt. Sie kann jedoch nicht garantieren, dass der Code unlesbar bleibt, das Kopieren verhindern oder echte Sicherheit bieten. Die folgenden Tools unterscheiden sich darin, was sie umwandeln, auf welche PHP-Versionen sie abzielen und wie sie lizenziert sind.
Dieser Artikel vergleicht acht bekannte PHP-Obfuscatoren, damit Sie einen auswählen können, der zu Ihrem Projekt passt.
Was PHP-Obfuskierung leisten kann und was nicht
Obfuskierung schreibt funktionierenden PHP-Code so um, dass ein gelegentlicher Leser ihm nur schwer folgen kann. Typische Umwandlungen sind das Umbenennen von Variablen, Funktionen, Klassen und Namespaces in bedeutungslose Bezeichner, das Entfernen von Kommentaren und Einrückungen sowie das Verzerren des Kontrollflusses. Ziel ist es, den Aufwand zu erhöhen, der zum Verstehen des Codes nötig ist — nicht, das Verstehen mathematisch unmöglich zu machen.
Da PHP die Datei weiterhin ausführen können muss, ist ein obfuskiertes Skript grundsätzlich immer umkehrbar. Ein entschlossener Leser kann Bezeichnertabellen dekodieren, den Code mit einem Debugger schrittweise durchgehen oder die obfuskierte Ausgabe mit dem Original vergleichen. Obfuskierung schreckt daher opportunistisches Kopieren ab, ist aber keine Verschlüsselung und kann Wiederverwendung oder Diebstahl nicht allein verhindern. Für echten Schutz brauchen Sie zusätzlich Lizenzbedingungen und, wo es darauf ankommt, eine serverseitige Auslieferung, die den Quellcode gar nicht erst ausliefert.
Obfuskierung unterscheidet sich außerdem von drei Dingen, mit denen sie häufig verwechselt wird. Minifizierung oder Kompaktierung entfernt lediglich Leerzeichen und Kommentare und kürzt manchmal Namen, um die Dateigröße zu verringern; die schlechtere Lesbarkeit ist ein Nebeneffekt, nicht das Ziel. Performance-Optimierung verändert Code so, dass er schneller läuft — was Kompaktierung nicht tut. Und Sicherheitsmaßnahmen wie das Hashen von Passwörtern oder der Schutz von Geheimnissen dürfen sich niemals auf Obfuskierung stützen, denn alles, was die PHP-Laufzeit lesen kann, kann ein Angreifer letztlich auch lesen.
Ein weiterer Hinweis gilt für die gesamte Liste: Die folgenden Funktionsbeschreibungen, PHP-Versionsangaben und Lizenzierungsnotizen geben wieder, was jedes Projekt in seiner Dokumentation angibt, und einige dieser Projekte wurden seit Jahren nicht mehr aktualisiert. Überprüfen Sie den aktuellen Stand eines Repositorys, bevor Sie dessen Tool übernehmen.
Acht PHP-Obfuscatoren im Vergleich
YAK Pro – PHP Obfuscator
YAK Pro, kurz für "Yet Another Killer Product", ist ein Open-Source-Obfuscator für PHP, der ein breites Spektrum an Umwandlungen anwendet:
- Er kann Codeanweisungen zufällig neu anordnen.
- Er kann unnötige Elemente wie Einrückungen und Kommentare entfernen.
- Er verwendet
goto-Anweisungen, umif,else,else if,for,while,do-whileund ähnliche Konstrukte zu verschleiern. - Er kann jeden wichtigen Teil des Codes umbenennen, einschließlich Funktionen, Klassen, Labels, Variablen und Namespaces.
YAK Pro ist auf GitHub verfügbar und kann von hier heruntergeladen werden.
PHP Obfuscator von Naneu
Naneu ist für PSR-/OOP-Code in PHP konzipiert. Anders als viele Tools, die auf eval()-basierter Obfuskierung beruhen, parst Naneu den PHP-Quellcode und benennt Klassen, Methoden, Variablen und ähnliche Codeteile um.
Die Bibliothek wurde ursprünglich geschrieben, um den Quellcode einer privaten Bibliothek zu obfuskieren, die nicht ungeschützt geteilt werden konnte. Ihre angegebenen Merkmale sind:
- Sie zielt auf PSR-/OOP-PHP-Codebasen ab.
- Laut ihrer Dokumentation kann sie Code obfuskieren, der für PHP 5.3, 5.4 und 5.5 geschrieben wurde, während das Tool selbst zum Ausführen eine PHP-Version über 5.4 benötigt. Dies sind veraltete Versionsangaben; prüfen Sie die aktuelle Kompatibilität vor der Verwendung.
Naneu ist auf GitHub verfügbar und kann von hier heruntergeladen werden.
Eccenux POBS
Eccenux POBS kompiliert PHP-Code in eine weniger lesbare Form. Seine Dokumentation ist offen, was die Grenze betrifft: Das Ergebnis ist nicht kugelsicher, und ein engagierter Leser kann dennoch erraten, was eine einzelne Funktion tut.
Die Installation von POBS ist einfach — laden Sie es herunter und entpacken Sie die Datei in das Verzeichnis des Webservers. Seine angegebenen Merkmale sind:
- Es kann für große Projekte verwendet werden.
- Die Konfiguration ist einfach und erfordert kaum Einrichtung.
Eccenux POBS ist auf GitHub verfügbar und kann von hier heruntergeladen werden.
pH-7 Obfuscator
pH-7 Obfuscator ist ein Open-Source-Tool, das auf den Schutz von Code auf Shared-Webhosting abzielt, wo es vor allem darum geht, den Quellcode vor gelegentlichem Zugriff zu verbergen. Seine angegebenen Merkmale sind:
- Es macht Code sehr schwer lesbar.
- Seine Dokumentation behauptet Unterstützung für PHP 5.2 und höher — eine veraltete Angabe, die Sie gegenüber Ihrer Laufzeit prüfen sollten.
pH-7 Obfuscator ist auf GitHub verfügbar und kann von hier heruntergeladen werden.
Xeoncross PHP Compactor
Xeoncross PHP Compactor komprimiert und obfuskiert PHP-Code, ist aber in erster Linie ein Kompaktor und kein tiefgreifender Obfuscator. Kompaktierung entfernt Leerzeichen und kürzt den Code; sie beschleunigt die PHP-Ausführung nicht — wählen Sie dieses Tool also nicht in Erwartung eines Performance-Gewinns.
Das Tool ist nützlich, um die tatsächliche Größe eines Projekts zu erkennen, indem die Anzahl der Zeichen verglichen wird, die zum Ausführen einer Klasse benötigt werden.
Xeoncross PHP Compactor ist auf GitHub verfügbar und kann von hier heruntergeladen werden.
smart-php-obfuscator
smart-php-obfuscator ist ein PHP-Obfuscator, der von Weidi Zhang entwickelt wurde. Seine angegebenen Merkmale sind:
- Er ist Open Source.
- Er soll einfach bleiben und den Quellcode dennoch wirkungsvoll unkenntlich machen.
- Seine Dokumentation behauptet Unterstützung für PHP 7.0 und höher — ebenfalls eine veraltete Angabe, die zu prüfen ist.
smart-php-obfuscator ist auf GitHub verfügbar und kann von hier heruntergeladen werden.
pmaslak/php-obfuscator
pmaslak/php-obfuscator darf für kommerzielle und nichtkommerzielle Zwecke verwendet werden und funktioniert ähnlich wie YAK Pro. Seine angegebenen Merkmale sind:
- Er ist Open Source.
- Er wird unter der MIT-Lizenz vertrieben, was die Übernahme in proprietäre Projekte vereinfacht.
pmaslak/php-obfuscator ist auf GitHub verfügbar und kann hier heruntergeladen werden.
pl4g4/online-php-obfuscator
pl4g4/online-php-obfuscator ist ein Online-Dienst, der von pl4g4 entwickelt wurde. Sie laden eine PHP-Datei hoch, der Dienst erzeugt eine obfuskierte Version, und Sie laden das Ergebnis herunter. Seine angegebenen Merkmale sind:
- Er ist Open Source.
- Sie können die obfuskierte Version Ihres PHP-Codes herunterladen.
Das Projekt behauptet, hochgeladene Dateien würden nach Abschluss der Obfuskierung gelöscht, doch diese Zusicherung ist unbestätigt. Laden Sie keinen privaten oder proprietären Quellcode zu einem Obfuskierungsdienst eines Drittanbieters hoch, ohne dessen Umgang mit den Daten und dessen Aufbewahrungsbedingungen selbst geprüft zu haben — verwenden Sie für sensible Inhalte vorzugsweise ein lokal ausgeführtes Tool.
Wählen Sie einen PHP-Obfuscator für Ihr Projekt
Passen Sie das Tool an Ihre tatsächliche Anforderung an, statt das Tool mit der längsten Funktionsliste zu wählen.
- Codebasis-Stil. Für eine moderne PSR-/OOP-Codebasis ist Naneu auf das Umbenennen von Klassen und Methoden nach dem Parsen ausgelegt. Für älteren oder prozeduralen Code wenden YAK Pro oder pmaslak/php-obfuscator breiter gefasste Bezeichner- und Kontrollflussänderungen an.
- Lizenzierung. Wenn Sie für ein kommerzielles Projekt eine ausdrücklich freizügige Lizenz benötigen, steht pmaslak/php-obfuscator unter der MIT-Lizenz. Prüfen Sie bei den anderen die Lizenzdatei des jeweiligen Repositorys selbst, da ein „Open-Source"-Etikett allein Ihre Rechte nicht definiert.
- PHP-Version. Die angegebenen Kompatibilitätsbereiche — Naneu für PHP 5.3–5.5-Ziele, pH-7 Obfuscator für 5.2+, smart-php-obfuscator für 7.0+ — stammen aus der Projektdokumentation und können veraltet sein. Führen Sie das Tool auf einer Kopie Ihres Codes unter Ihrer produktiven PHP-Version aus, bevor Sie sich festlegen.
- Lokales Tool versus Online-Dienst. pl4g4/online-php-obfuscator ist die bequemste Option, erfordert aber das Hochladen Ihres Quellcodes. Belassen Sie proprietären Code bei lokalen Tools, es sei denn, Sie haben den Umgang des Dienstes mit Ihren Daten geprüft.
- Ziel. Wenn Sie die Lesbarkeit verringern wollen, wählen Sie einen echten Obfuscator wie YAK Pro, Naneu oder pH-7 Obfuscator. Wenn Sie kleinere Dateien oder eine Größenmessung wünschen, passt Xeoncross PHP Compactor besser — es ist aber keine Sicherheitsmaßnahme und macht PHP nicht schneller.
Was auch immer Sie wählen: Behalten Sie den Originalquellcode in der Versionskontrolle, testen Sie die obfuskierte Ausgabe gründlich — das Umbenennen kann Code beschädigen, der auf Reflection, dynamische Aufrufe oder Namenskonventionen angewiesen ist — und betrachten Sie Obfuskierung als ein Abschreckungsmittel neben der Lizenzierung, nicht als Garantie dafür, dass Ihr Code nicht gelesen oder wiederverwendet werden kann.