HOWTO · PHP

8 meilleurs obfuscateurs de code PHP

Ce tutoriel présente les huit meilleurs obfuscateurs de code en PHP.

Sur cette page

L’obfuscation PHP rend le code source plus difficile à examiner en le réécrivant sous une forme moins lisible, mais elle ne peut pas garantir que le code restera illisible, empêcher la copie ni fournir une véritable sécurité. Les outils ci-dessous diffèrent par ce qu’ils transforment, les versions de PHP qu’ils ciblent et leur licence.

Cet article compare huit obfuscateurs PHP connus afin de vous aider à choisir celui qui convient à votre projet.

Ce que l’obfuscation PHP peut et ne peut pas faire

L’obfuscation réécrit du code PHP fonctionnel de sorte qu’un lecteur non averti ait du mal à le suivre. Les transformations typiques consistent à renommer les variables, fonctions, classes et espaces de noms avec des identifiants dépourvus de sens, à supprimer les commentaires et l’indentation, et à compliquer le flux de contrôle. L’objectif est d’augmenter l’effort nécessaire pour comprendre le code, et non de rendre cette compréhension mathématiquement impossible.

Comme PHP doit toujours pouvoir exécuter le fichier, un script obfusqué est en principe toujours réversible. Un lecteur déterminé peut décoder les tables d’identifiants, suivre le code avec un débogueur ou comparer le résultat obfusqué avec l’original. L’obfuscation décourage donc la copie opportuniste, mais ce n’est pas du chiffrement et elle ne peut pas, à elle seule, empêcher la réutilisation ou le vol. Pour une protection réelle, il faut aussi des conditions de licence et, lorsque c’est important, une distribution côté serveur qui ne livre jamais le code source.

L’obfuscation se distingue aussi de trois notions avec lesquelles on la confond souvent. La minification ou la compaction se contente de supprimer les espaces et les commentaires et raccourcit parfois les noms pour réduire la taille des fichiers ; la baisse de lisibilité est un effet secondaire, pas le but recherché. L’optimisation des performances modifie le code pour qu’il s’exécute plus vite, ce que la compaction ne fait pas. Et les contrôles de sécurité, comme le hachage des mots de passe ou la protection des secrets, ne doivent jamais reposer sur l’obfuscation, car tout ce que l’environnement d’exécution PHP peut lire, un attaquant peut finir par le lire aussi.

Une dernière réserve s’applique à toute la liste : les descriptions de fonctionnalités, les affirmations sur les versions de PHP et les indications de licence ci-dessous reflètent ce que chaque projet déclare dans sa documentation, et certains de ces projets n’ont pas été mis à jour depuis des années. Vérifiez l’état actuel d’un dépôt avant d’adopter son outil.

Comparer huit obfuscateurs PHP

YAK Pro – Obfuscateur PHP

YAK Pro, abréviation de "Yet Another Killer Product", est un obfuscateur PHP open source qui applique un large éventail de transformations :

  1. Il peut réorganiser les instructions du code de façon aléatoire.
  2. Il peut supprimer les éléments inutiles comme l’indentation et les commentaires.
  3. Il utilise des instructions goto pour masquer les constructions if, else, else if, for, while, do-while et similaires.
  4. Il peut renommer chaque partie importante du code, y compris les fonctions, les classes, les étiquettes, les variables et les espaces de noms.

YAK Pro est disponible sur GitHub et peut être téléchargé depuis ici.

Obfuscateur PHP par Naneu

Naneu est conçu pour le code PHP PSR/OOP. Contrairement à de nombreux outils qui reposent sur une obfuscation basée sur eval(), Naneu analyse le code source PHP et renomme les classes, les méthodes, les variables et les autres éléments du code.

La bibliothèque a été écrite à l’origine pour obfusquer le source d’une bibliothèque privée qui ne pouvait pas être partagée sans protection. Ses caractéristiques déclarées sont :

  1. Elle cible les bases de code PHP PSR/OOP.
  2. Selon sa documentation, elle peut obfusquer du code écrit pour PHP 5.3, 5.4 et 5.5, tandis que l’outil lui-même exige une version de PHP supérieure à 5.4 pour fonctionner. Il s’agit d’affirmations de version datées ; confirmez la compatibilité actuelle avant utilisation.

Naneu est disponible sur GitHub et peut être téléchargé depuis ici.

Eccenux POBS

Eccenux POBS compile le code PHP sous une forme moins lisible. Sa documentation est franche sur cette limite : le résultat n’est pas infaillible, et un lecteur motivé peut toujours deviner ce que fait une fonction donnée.

L’installation de POBS est simple : téléchargez-le et décompressez le fichier dans le répertoire du serveur web. Ses fonctionnalités déclarées sont :

  1. Il peut être utilisé pour de grands projets.
  2. La configuration est facile et ne demande pas beaucoup de réglages.

Eccenux POBS est disponible sur GitHub et peut être téléchargé depuis ici.

pH-7 Obfuscator

pH-7 Obfuscator est un outil open source destiné à protéger le code déployé sur un hébergement web mutualisé, où le principal souci est de cacher le source aux accès indiscrets. Ses fonctionnalités déclarées sont :

  1. Il rend le code très difficile à lire.
  2. Sa documentation affirme une prise en charge de PHP 5.2 et des versions supérieures — une affirmation datée qu’il convient de vérifier par rapport à votre environnement d’exécution.

pH-7 Obfuscator est disponible sur GitHub et peut être téléchargé depuis ici.

Xeoncross PHP Compactor

Xeoncross PHP Compactor compresse et obfusque le code PHP, mais c’est avant tout un compacteur plutôt qu’un obfuscateur en profondeur. La compaction supprime les espaces et raccourcit le code ; elle n’accélère pas l’exécution de PHP, donc ne choisissez pas cet outil en espérant un gain de performance.

L’outil est utile pour mesurer la taille réelle d’un projet en comparant le nombre de caractères nécessaires à l’exécution d’une classe.

Xeoncross PHP Compactor est disponible sur GitHub et peut être téléchargé depuis ici.

smart-php-obfuscator

smart-php-obfuscator est un obfuscateur PHP développé par Weidi Zhang. Ses fonctionnalités déclarées sont :

  1. Il est open source.
  2. Il vise à rester simple tout en brouillant efficacement le code source.
  3. Sa documentation affirme une prise en charge de PHP 7.0 et des versions supérieures — là encore une affirmation datée à vérifier.

smart-php-obfuscator est disponible sur GitHub et peut être téléchargé depuis ici.

pmaslak/php-obfuscator

pmaslak/php-obfuscator peut être utilisé à des fins commerciales et non commerciales et fonctionne de manière similaire à YAK Pro. Ses fonctionnalités déclarées sont :

  1. Il est open source.
  2. Il est distribué sous licence MIT, ce qui simplifie son adoption dans les projets propriétaires.

pmaslak/php-obfuscator est disponible sur GitHub et peut être téléchargé ici.

pl4g4/online-php-obfuscator

pl4g4/online-php-obfuscator est un service en ligne développé par pl4g4. Vous téléversez un fichier PHP, le service produit une version obfusquée et vous téléchargez le résultat. Ses fonctionnalités déclarées sont :

  1. Il est open source.
  2. Il vous permet de télécharger la version obfusquée de votre code PHP.

Le projet affirme que les fichiers téléversés sont supprimés une fois l’obfuscation terminée, mais cette garantie n’est pas vérifiée. Ne téléversez pas de code source privé ou propriétaire vers un service d’obfuscation tiers sans avoir vérifié par vous-même ses conditions de traitement et de conservation — préférez un outil exécuté localement pour tout ce qui est sensible.

Choisir un obfuscateur PHP pour votre projet

Choisissez l’outil en fonction de votre contrainte réelle plutôt que celui qui possède la plus longue liste de fonctionnalités.

  • Style de base de code. Pour une base de code moderne PSR/OOP, Naneu est conçu autour du renommage analysé des classes et des méthodes. Pour du code plus ancien ou procédural, YAK Pro ou pmaslak/php-obfuscator appliquent des changements plus larges aux identifiants et au flux de contrôle.
  • Licence. Si vous avez besoin d’une licence permissive explicite pour un projet commercial, pmaslak/php-obfuscator est distribué sous licence MIT. Pour les autres, vérifiez vous-même le fichier de licence de chaque dépôt, car une étiquette « open source » ne définit pas à elle seule vos droits.
  • Version de PHP. Les plages de compatibilité déclarées — Naneu pour les cibles PHP 5.3–5.5, pH-7 Obfuscator pour 5.2+, smart-php-obfuscator pour 7.0+ — proviennent de la documentation des projets et peuvent être obsolètes. Exécutez l’outil sur une copie de votre code avec votre version de production de PHP avant de vous engager.
  • Outil local ou service en ligne. pl4g4/online-php-obfuscator est l’option la plus pratique, mais exige le téléversement de votre code source. Gardez le code propriétaire sur des outils locaux, sauf si vous avez vérifié la manière dont le service traite les données.
  • Objectif. Si vous voulez réduire la lisibilité, choisissez un véritable obfuscateur comme YAK Pro, Naneu ou pH-7 Obfuscator. Si vous voulez des fichiers plus petits ou une mesure de taille, Xeoncross PHP Compactor convient mieux — mais ce n’est pas une mesure de sécurité et cela ne rendra pas PHP plus rapide.

Quel que soit votre choix, conservez le code source original dans un système de gestion de versions, testez minutieusement le résultat obfusqué — le renommage peut casser le code qui dépend de la réflexion, des appels dynamiques ou des conventions de nommage — et considérez l’obfuscation comme un moyen de dissuasion parmi d’autres, aux côtés de la licence, et non comme une garantie que votre code ne pourra pas être lu ou réutilisé.