it-swarm.com.de

Kann ich PHP] kompilieren, um den Code auszublenden?

Es ist ein ziemlich kritisches Problem aufgetreten, das eher legal als technisch ist, aber ich hoffe, eine kostengünstigere technische Lösung zu finden. In einigen Ländern gibt es Gesetze (ich werde den Namen weglassen), nach denen Sie Daten auf einem Server in diesem Land speichern müssen. Es ist unmöglich, die Back-End-Software vollständig von der Datenbank zu trennen. Die Regierung dieses Landes kann nach Belieben auf den Server und alle darauf befindlichen Daten zugreifen und diese an staatliche oder gesponserte Wettbewerber weitergeben.

Ich bin nicht besorgt über die Benutzerdaten, da diese getrennt von Benutzern aus anderen Ländern aufbewahrt werden, aber ich bin sehr besorgt über den PHP Code, der auf dem Server weit offen ist).

Gibt es eine Möglichkeit, den Code PHP) irgendwie zu kompilieren oder zu verschleiern, damit er weiterhin auf dem Server ausgeführt werden kann, aber nicht wie kompilierte Software angezeigt/bearbeitet/geändert werden kann?

Oder ist die einzige technische Option, um zu einer kompilierten Programmiersprache wie Java zu wechseln?

EDIT : Bitte lösche meinen Beitrag nicht. Ich weiß, dass es nicht sehr wertvoll ist, aber die Antwort von Jörg W Mittag ist von unschätzbarem Wert! Vielleicht kann jemand mit besseren Programmierkenntnissen meine Frage bearbeiten, um sie besser zu beantworten? Vielen Dank :)

3
Arthur Tarasov

Gibt es eine Möglichkeit, den Code PHP) irgendwie zu kompilieren oder zu verschleiern, damit er weiterhin auf dem Server ausgeführt werden kann, aber nicht wie kompilierte Software angezeigt/bearbeitet/geändert werden kann?

Nein.

Damit der Code auf dem Server ausgeführt werden kann, muss die CPU ihn verstehen. CPUs sind viel, viel dümmer als Menschen. Wenn die CPU es verstehen kann, kann es auch ein Mensch. Wenn Sie dafür sorgen, dass ein Mensch den Code nicht verstehen kann, kann eine CPU dies auch nicht und Sie können ihn nicht mehr ausführen.

Übrigens: Alle derzeit vorhandenen PHP Implementierungen (Zend Engine, HVVM, P8, Quercus, Phalanger, Peachpie, HippyVM, Tagua VM, JPHP, ...) kompilieren Ihre PHP Code.

Oder ist die einzige technische Option, um zu einer kompilierten Programmiersprache wie Java zu wechseln?

Nein.

Es macht keinen Unterschied. Der Code muss sich in einer Form auf dem Server befinden, die der Server verstehen kann. Aber ein Mensch kann es auch verstehen.

Die nur mögliche Lösung um sicherzustellen, dass jemand keinen Zugriff auf Ihren Code erhält, besteht darin, ihm keinen Zugriff auf Ihren Code zu gewähren. So einfach ist das wirklich.

Der einfachste Weg, dies zu erreichen, besteht darin, den Code in Ihren Räumlichkeiten zu behalten und den Zugriff nur über einen streng kontrollierten Dienst anzubieten. So hält Google beispielsweise seinen Code geheim.

Eine viel, viel, viel schwierigere und teurere Möglichkeit ist die vollständige End-to-End-Verschlüsselung Ihres Codes. Im Wesentlichen liefern Sie den Server als manipulationssichere, undurchdringliche Black Box, die den Zugriff nur über einen streng kontrollierten Dienst ermöglicht. Der Trick dabei ist, sicherzustellen, dass die Black Box tatsächlich bleibt "schwarz" ist. Dies setzt voraus, dass Sie die vollständige Kontrolle über das Betriebssystem, alle Bibliotheken, die CPU, das Motherboard, den RAM, alle Busse und E/A-Chips im System usw. haben.

Erinnerst du dich an die XBox? Microsoft hat den Hauptverschlüsselungsschlüssel über einen unverschlüsselten Bus vom Verschlüsselungsmodul an die CPU übertragen. Sie dachten, das wäre in Ordnung, weil es keine Hardware gibt, die einen solchen Hochgeschwindigkeitsbus schnüffeln kann. Nun, es stellt sich heraus, dass Sie, wenn Sie ein 10000000 $ Oszilloskop und viel Zeit zur Hand haben, können tatsächlich diesen Bus schnüffeln, und wie es passiert, MIT hat ein solches Oszilloskop erfunden, MIT Studenten haben viel Zeit und sind in Kryptoanalyse geschult, und sie mögen es, Linux auf allem auszuführen, also haben sie ein Linux-Installationsprogramm für die XBox erstellt, Das wiederum wurde von Crackern rückentwickelt, um Installer für Raubkopien zu erstellen.

Übrigens: Es gibt keine "kompilierte Programmiersprache". Zusammenstellung oder Interpretation sind Merkmale des Compilers oder Interpreters (duh!), Nicht der Sprache. Sie leben auf völlig unterschiedlichen Abstraktionsebenen. Wenn Englisch eine typisierte Sprache wäre, wäre der Begriff "kompilierte Programmiersprache" ein Typfehler. Jede Sprache kann mit einem Compiler implementiert werden und jede Sprache kann mit einem Interpreter implementiert werden. Beispielsweise verfügen alle derzeit vorhandenen Mainstream-Implementierungen für PHP, JavaScript, Python und Ruby-Implementierungen über Compiler. Umgekehrt gibt es Interpreter für C, C++ und Haskell.

13
Jörg W Mittag

Sie können verschleiern, aber Sie können sich nicht vollständig verstecken. Ich war zuvor gezwungen, sowohl ionCube als auch Zend Guard zu verwenden, die diese Verschleierung durchführen, und es gibt keinen großen Unterschied zwischen ihnen. Diese Produkte kompilieren Ihre PHP - Dateien in Bytecode (Opcode) vor und versenden nur den Bytecode in einem verschlüsselten Container. Zur Laufzeit entschlüsselt ein Loader (den Sie auf dem Server aktivieren müssen) den Bytecode und fügt ihn ein Erinnerung.

Wenn Sie solche Tools verwenden, wird das gelegentliche Schnüffeln blockiert, aber ein entschlossener Angreifer kann trotzdem herausfinden, was Ihr Code tut. Änderungen werden auch schwieriger, da der Quellcode nicht enthalten ist (nur der Bytecode). Das Zurückkompilieren des Bytecodes in (irgendeine Form von) Quellcode ist jedoch möglich, und es scheinen einige kommerzielle Tools online zu sein, die dies tun, aber ich habe keine Erfahrung damit.

6
Joeri Sebrechts