Archive des tags | "obfuscation"

Tags: , ,

Protéger du code PHP (obfuscation, byte code)

Publié le 11 mai 2009 par Manu

Le problème d’un langage comme le PHP, c’est que le code source est intégralement disponible. Lorsque l’on est maître du serveur où sont hébergés les scripts, tout va bien, mais sinon comment faire pour protéger le code contre la modification ou la copie abusive.
Il existe actuellement 2 méthodes pour cela :

  • l’obfuscation qui consiste à rendre illisible le code en supprimant les espaces, les commentaires et en renommant les variables/fonctions.
  • transformer le code PHP en bytecode (fichier binaire exécuté par le moteur PHP)
Exemple dobfuscation PHP

Exemple d'obfuscation PHP

La seule technique vraiment valable est la deuxième car elle est réellement irréversible (voir commentaire). Par contre  même si l’on ne voit pas le code, certaines données comme les chaînes de caractères sont en clair, mais la pluspart des encodeurs bytecode font aussi de l’obfuscation et dans ce cas pas de problèmes.

Il faut aussi savoir que pour interpréter du bytecode sur un serveur, il est obligatoire d’installer une extension php, et il faut donc avoir la main sur les fichiers de configuration du serveur (php.ini). Par conséquent cette solution n’est pas valable sur des hébergements mutualisés, à moins que l’hébergeur consente à le faire. (par exemple OVH propose Zend Optimizer et Ioncube sur ses mutu, à activer via htaccess).

Pour d’autres hébergeurs ne proposant pas ces fonctionalités, l’obfuscation peut néanmoins dépanner car le code reste tout de même assez dur à déchiffrer (voir la capture au dessus) même si ce n’est pas impossible.

A noter, il existe aussi des solution hybrides, mêlant obfuscation et chiffrage mais elles ne sont pas plus sures pour autant car il faut bien déchiffrer pour pouvoir interpréter le code PHP et donc on peut récupérer le code avant son exécution. De plus l’étape de déchiffrement est couteuse en temps de calcul et imposera au serveur une charge supplémentaire.

A l’inverse, les solutions à base de bytecode sont plus rapides à interpréter que du PHP normal.

Pour conclure cet article, je vous jette pêlemêle quelques liens que j’ai pu glaner. Si vous décidez d’adopter un de ceux-ci, faites attention car certains datent un peu (pas de support PHP5 par exemple) et d’autres sont très chers, mais ça c’est une autre histoire ;)

Commentaires (4)

Advertise Here
Advertise Here