Protéger son code sources PHP avec bcompiler

Il est possible de protéger son code sources PHP des petits malins qui pourraient le récupérer car parfois on peut vendre ou donner des scripts mais on ne souhaite pas que le destinataire possède les sources. La bibliothèque Bcompiler vous aidera dans cette tâche.

Article lu   fois.

L'auteur

Profil Pro

Liens sociaux

Viadeo Twitter Facebook Share on Google+   

I. Bcompiler c'est quoi ?

I-A. Description

Bcompiler est une bibliothèque php crée à l'origine :

  1. Pour encoder un script complet dans une application PHP propriétaire
  2. Pour encoder des classes et/ou des fonctions dans une application PHP propriétaire
  3. Pour permettre d'utiliser des applications PHP-GTK sur des bureaux clients sans avoir besoin du fichier php.exe.
  4. Pour rendre faisable de convertir un code PHP en C

Nous resterons que sur le premier but. Il faut activer l'extension php_bcompiler.dll sous Windows ou télécharger, décompresser et recompiler PHP sous linux (explication ici :http://us2.php.net/manual/fr/ref.bcompiler.phphttp://us2.php.net/manual/fr/ref.bcompiler.php )

I-B. Comment ça marche ?

En réalité Bcompiler transforme votre code en ByteCode (similaire à Java ou C#) non lisible par un utilisateur mais seulement par PHP, il s'agit d'un code intermédiaire plus abstrait que le code machine non directement exécutable. Il est contenu dans un fichier binaire un peu plus lourd qui représente un script, tout comme un fichier objet produit par un compilateur, ce ByteCode est directement interprété par PHP et il n'est pas possible de retrouver le code PHP original.

II. Avec un exemple

II-A. Pré-requis

Imaginons deux scripts hello.php et function.php que nous voulons protéger.

hello.php
Sélectionnez

<?php
include "function.php";
echo hello();
?>
				
function.php
Sélectionnez

<?php
function hello()
{
        return "hello";
}
?>
				

II-B. Transformation du code

Tout d'abord il faut transformer nos deux scripts en ByteCode, nous allons passer par un script en PHP qui permettra de les transformer.

transform.php
Sélectionnez

<?php

$fh = fopen("hello.phb", "w");

bcompiler_write_header($fh);

bcompiler_write_file($fh, "hello.php");

bcompiler_write_footer($fh);

fclose($fh);

?>

II-B-1. Explications

On crée par cette transformaiton le fichier hello.phb

 
Sélectionnez

$fh = fopen("hello.phb", "w");

On écrit dans ce fichier un en-tête de type Bcompiler pour que l'interpréteur PHP puisse comprendre qu'il s'agit de ByteCode.

 
Sélectionnez

bcompiler_write_header($fh);

On écrit dans ce fichier le Byte Code du script hello.php

 
Sélectionnez

bcompiler_write_file($fh, "hello.php");

On écrit le pied du script

 
Sélectionnez

bcompiler_write_footer($fh);

Et on ferme notre fichier

 
Sélectionnez

fclose($fh);

Et on fait la même chose avec function.php pour créer function.phb.

II-B-2. Résultat

Maintenant hello.phb contient notre script hello.phb en ByteCode :
ByteCode de hello.php

III. Finition

Maintenant que l'on a nos deux scripts hello.phb et function.phb il faut modifier les fichiers hello.php et function.php pour qu'ils puissent appeler leurs homologues 'ByteCodé'.

hello.php
Sélectionnez

<?php
include "hello.phb";
?>
function.php
Sélectionnez

<?php
include "function.phb";
?>

L'appel par include "mon_fichier_ByteCodé.phb" permet d'exécuter le ByteCode, donc sur la page hello.php on verra hello.

IV. Conclusion

Il faut éviter de faire de multiples includes de fichers car cela ralentit considérablement l'exécution des scripts. Cependant, il existe d'autre fonction de cette extension qui permettent ce genre d'opération (http://us2.php.net/manual/fr/ref.bcompiler.phphttp://us2.php.net/manual/fr/ref.bcompiler.php).

Bcompiler est une bonne façon de protéger son code et offre de nouvelle perspective pour PHP, de plus il est gratuit et offre une excellente alternative à tous les autres logiciels (payants) proposant les mêmes services.

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

Ce document est issu de http://www.developpez.com et reste la propriété exclusive de son auteur. La copie, modification et/ou distribution par quelque moyen que ce soit est soumise à l'obtention préalable de l'autorisation de l'auteur.