Pour des raisons souvent liées à la propriété intellectuelle, vous pouvez chercher à protéger vos scripts PHP. Vous disposez en général de deux façons de faire, à l’artisanale (méthode dite du “one again”), ou opter pour la manière professionnelle (méthode dite du “obi wan kenobi”).
1. L’approche artisanale
Vous passez votre script avec une moulinette qui va renommer toutes vos variables, et retirer tous les sauts de lignes. C’est moyennement efficace, et ca peut provoquer des bugs (surtout si vous êtes un adepte des chaînes de caractères sur plusieurs lignes). Mais ça a le mérite de décourager les personnes tentées de reprendre votre code à leur compte ou de le tripatouiller.
Les personnes plus expérimentées sortiront direct le reformatteur de code Eclipse pour réindenter correctement le code et lui redonner ses bonnes variables…
2. L’approche industrielle
Vous misez directement sur l’artillerie lourde moyennant quelques pièces d’or sonnantes et trébuchantes. Pour cela des sociétés tierces fournissent de l’outillage pour crypter votre code très efficacement moyennant une licence. Les outils open source étant (hélas) encore trop immatures pour prétendre jouer dans la cour des grands, j’ai retenu deux softs propriétaires :
Comment marchent ces outils ? Tout d’abord une outil côté poste client vous permet de sélectionner les fichiers à crypter. Chaque fichier est compilé en byte code PHP, puis ce dernier est brouillé avec une clé de cryptage obscure à base de sang de poulet et de plumes de chef indien.
Ensuite, il vous faudra placer dans le dossier PHP une extension native pour gérer les fichiers cryptés. Chaque script PHP brouillé contient simplement un petit code PHP en clair en tête du contenu crypté pour charger si besoin à la volée l’extension. Pour des raisons évidentes de performances, il est recommandé de déclarer l’extension dans php.ini pour charger l’extension Zend ou IonCube au démarrage, le code de chargement à la volée étant là surtout pour les problèmes de serveurs mutualisés. A noter que la compilation sous forme de bytecode implique en bonus une amélioration de performances puisqu’il n’y a pas de réinterprétation du script à chaque fois.
Enfin d’un point de vue fonctionnel, vous avez la possibilité de limiter l’utilisation des scripts encodés :
- Edition “Trial” limitée à X jours
- Restriction à une plage d’adresse IP ou à des adresses MAC
- Personnalisation du système de licence à l’aide d’un morceau de code additionnel.
Ce sont donc des outils intéressants pour l’approche entreprise du PHP, permettant de garder sa propriété intellectuelle intacte moyennant un coût relativement faible. Le point noir est qu’il vaut mieux avoir la main sur la plateforme de déploiement pour imposer ce choix technique dans la configuration PHP de la machine hôte, plutôt que d’être obligé de le charger à la volée. Veillez aussi à garder le code source en clair quelque part… un malheur est si vite arrivé
Commentaires récents