Sécurisation du code source

Sécurisation du code source - PHP - Programmation

Marsh Posté le 20-10-2008 à 11:50:09    

Bonjour,
 
je travail actuellement sur la création d'un site php qui sera en service sur un Intranet.
 
Afin d'éviter tout modification du code par n'importe qui j'utilise la compilation du code avec bcompiler.
 
Mais je souhaiterais aller plus loin, c'est à dire que je veux bloquer l'exécution du programme sur un serveur en particulier, pour éviter que le programme soit copié sur plusieurs serveurs...
 
Je recherche donc une fonction, ou un module DLL qui me permettrai d'avoir un id unique par machine (basé sur l'adresse MAC ou No de série du disque dur etc...)
 
Connaissez-vous un truc capable de remplir cette fonction ? ;)
 
Merci!

Reply

Marsh Posté le 20-10-2008 à 11:50:09   

Reply

Marsh Posté le 20-10-2008 à 12:13:12    

Genre avec ionCube Encoder tu peux faire ça. Bon OK c'est payant, mais ça fonctionne bien :D

Reply

Marsh Posté le 20-10-2008 à 13:00:36    

$379 pour la version qui permet de le faire :/
 
Peut-être qu'une DLL (module) pourrait me fournir ces infos?

Reply

Marsh Posté le 20-10-2008 à 15:10:28    

Question probablement bête puisque j'ai sûrement mal compris : Pourquoi ne pas gérer les droits de lecture/écriture via le système d'exploitation directement ?
 
Mais peut-être as-tu l'intention de mettre ton site en service sur n'importe quel Intranet et non sur un spécifique...

Reply

Marsh Posté le 20-10-2008 à 18:41:52    

spamoi a écrit :

$379 pour la version qui permet de le faire :/
 
Peut-être qu'une DLL (module) pourrait me fournir ces infos?


ça risque d'être difficile, si c'est pour un intranet et que le serveur ne tourne pas sur windows, je ne suis pas sûr que tu puisses bénéficier du même type de protection.
 
Sinon il te reste le coup des clés d'activation ... 5Tiens ça me rappelle quelqu'un  :whistle:)


---------------
NewsletTux - outil de mailing list en PHP MySQL
Reply

Marsh Posté le 20-10-2008 à 19:25:15    

Ça tournera sur un bon vieux XP en interne, pas besoin de plus.
 
je me focalise sur la recherche d'un DLL qui pourrait me fournir les informations suivante: @MAC, No série du DD dur etc...
 
C'est quoi ton système de clé sinon ? tu veux que je fasse un WGA en php ? :p

Reply

Marsh Posté le 20-10-2008 à 20:02:07    

Bon bah finalement c'est pas compliqué, en 3 lignes :p
 

Code :
  1. <?php
  2. exec("arp -a",$out,$ret);
  3. $tab = explode(" ",$out[3]);
  4. echo "Adresse M@C: ".$tab[13];
  5. ?>

Reply

Marsh Posté le 21-10-2008 à 11:14:53    

Bonjour,
 
j'ai aussi cherché une DLL de ce type mais en vain.
la seule solution que j'ai trouvé c'est de créer des classes principale  (connexion à la BDD, gestion de fonction d'affichage, ... ) déporté c'est fichier dans un autre répertoire "caché" sur le disque dur.
Celle-ci sont faite en PHP5 en utilisant un design patern (SingleTon) pour compliquer les chose.
pour les appeler, j'ai indiqué ce répertoire dans le PHP.INI à la directive include_path
Du coup je fais juste un

Code :
  1. <? require_once("mon_fichier.php" );?>


et ça fonctionne nikel.
si quelqu'un récupère le répertoire www, il ne prend pas les classes principales et ainsi, cela ne peut fonctionner sur un autre serveur.
 
autre chose, avec ta solution peut être désactivé, car c'est une fonction dans ton code...
Le mienne ne peut être désactivé mais contourné. Cela reste plus laborieux car il faut réécrire les classes


---------------
Tout à commencé par un rêve...
Reply

Marsh Posté le 21-10-2008 à 11:40:52    

Contournable oui et non :)
 
Le code que j'ai mis pour l'adresse MAC sera bien entendu compilé en ByteCode avec l'outil (gratuit) de PHP: bcompiler.
 
Ainsi le code PHP devient du code "machine" qui n'est pas lisible. Ce qui est bien c'est que le fichier reste un .php, et j'ai juste à activer le module bcompiler de PHP pour que le code soit interpréter comme du PHP.
 
Inconvénient: le fichier prend du poid, genre un fichier de 8ko passe à 24Ko etc...
Avantage: tu peux mélanger du PHP+HTML, pas de pb!
 
Par contre je ne sais pas si on peut décompiler ce code... je fait un recherche la dessus...
 
Edit: http://maxime-ohayon.developpez.co [...] bcompiler/


Message édité par spamoi le 21-10-2008 à 11:43:04
Reply

Marsh Posté le 21-10-2008 à 11:51:35    

J'avais recherché dans ce sens, et un code Bcompiler ne peut être remis en code PHP.
Ensuite il est vrai qu'il faut que tu cacheta fonction via l'appel à une autre fonction. Du style tu fais un appel sql et au passage tu vérifie ton adresse MAC.
Mais attention tout de même, Bcomoiler reste en version EXPERIMENTALE...


---------------
Tout à commencé par un rêve...
Reply

Marsh Posté le 21-10-2008 à 11:51:35   

Reply

Marsh Posté le 21-10-2008 à 12:55:41    

Effectivement sur google on ne trouve rien sur une éventuelle décompilation d'un code Bcompiler... c'est plutôt rassurant :)
 
Bcompiler est actuellement en version 0.8, et il faut bien entendu tester complètement son programme avant de l'envoyer :p
 
En gros, niveau protection je pensais faire ceci:
 
1. Créer un fichier .php qui contient es divers vérifications
=> Adresse MAC / IP du serveur
=> Date de validité
=> CRC des fichiers .php
 
2. Include ce code dans chaque fichier php par un include_once()
3. Refuser l'éxecution par un die("pwet pwet" ) si le fichier de vérif n'est pas présent
 
3. Bcompiler le tout
 
D'autres idées?
 

Reply

Marsh Posté le 21-10-2008 à 13:35:43    

Verrouiller un langage open source... c'est pas très sérieux...  :heink:

Reply

Marsh Posté le 21-10-2008 à 13:43:53    

CyberDenix a écrit :

Verrouiller un langage open source... c'est pas très sérieux...  :heink:


 
Et vi, c'est dommage, mais travailler dans une entreprise où on risque de piller ton travail est également dommage...
 
Et puis, c'est du dév interne à la boite, le code appartient à l'entreprise, avec des morceaux de codes qui accédent à des données *confidentielles* ...
 
 :hello:

Reply

Marsh Posté le 21-10-2008 à 22:28:17    

faire un CRC des fichiers .php attention si tu doit les modifier à la hâte (parce qu'il y a une partie qui plante ou simplement pour corriger une faute d'orthographe ) tu risque d'être embêté car tu seras obligé d'avoir les fichiers originaux à porté de main pour pouvoir refaire les fichiers bcompiler.
 
Perso avec bcompile j'ai eu des problèmes lors d'un include => il ne les trouvais plus ensuite...


---------------
Tout à commencé par un rêve...
Reply

Marsh Posté le 23-10-2008 à 15:20:10    

Je viens d'essayer ce logiciel: http://www.truebug.com/
 
Le résultat est assez bluffant !! et pour seulement $25 :p

Reply

Marsh Posté le 24-10-2008 à 21:37:57    

Le concept est sympa, mais le jour ou tu veux travailler sous Linux, la solution n'est plus valide !


---------------
Tout à commencé par un rêve...
Reply

Marsh Posté le 24-10-2008 à 22:00:00    

Pourquoi plus valide ?
 
Concernant le code ou le soft ? Si c'est le soft, une ptite Wmware et hop :p
 
 :hello:

Reply

Marsh Posté le 24-10-2008 à 22:12:01    

Hello,
 
je crois que tu vois pas bien l'impact d'une VM....
C cool pour tester, mais c'est moisi autrement en perf
(sauf si tu as le matos/soft adéquat, et là ca coute cher..)
 
les solutiions à base de zend encoder (ou autres) semblent plus adaptées (et plus portables surtout).
 
a+

Reply

Marsh Posté le 25-10-2008 à 02:32:03    

Pour l'éxécution et vu ce que tu demandes je pense honnetement que la MAC suffit amplement. C'est en supposant un point d'entrée unique si tu as bien fait les choses ;)

Reply

Marsh Posté le 25-10-2008 à 10:20:23    

sub1 a écrit :

Hello,
 
je crois que tu vois pas bien l'impact d'une VM....
C cool pour tester, mais c'est moisi autrement en perf
(sauf si tu as le matos/soft adéquat, et là ca coute cher..)
 
les solutiions à base de zend encoder (ou autres) semblent plus adaptées (et plus portables surtout).
 
a+


 
 :non: je ne parlais pas de faire tourner le site SOUS une VMware, je parlais juste de l'encoder....(l'éxécutable du mois)
 
Le GROS défaut du Zend Guard c'est son prix... c'est bien pour une PME, mais pas pour moi  :ange:  
 
 :hello:


Message édité par spamoi le 25-10-2008 à 10:47:08
Reply

Marsh Posté le 26-10-2008 à 19:10:56    

Le monsieur te dit que tu es en train de transformer ton php en java (et c'est pas vraiment un compliment...).
 
Comme tu as transformé ton code php en bytecode, il faudra à chaque ligne que ton module BCompiler retransforme le bytecode en code php, avant interprétation du code php.
 
Niveau perf, c'est moisi par rapport à une application native php.


---------------
Directeur Technique (CTO)
Reply

Marsh Posté le 26-10-2008 à 19:16:08    

tu aurai pas plutot interet a vendre de s mise a jour et de la maintenance ?  
 
j'ai l'impression que tu ne te bats pas sur les points les plus importants

Reply

Marsh Posté le 27-10-2008 à 13:04:42    

Si ton PC est sécurisé, il n'y a pas de possibilité pour les autres de récupérer ton code. Sache que le code PHP n'apparaît pas dans la source une fois interprété par PHP.


---------------
http://www.aideinfo.com/  Whois adresses IP/domaines le plus évolué !!  FAQ Free Mobile
Reply

Marsh Posté le 27-10-2008 à 14:36:21    

Tu peux te passer de faire ce genre de réfléxion totalement inutile.


---------------
http://www.aideinfo.com/  Whois adresses IP/domaines le plus évolué !!  FAQ Free Mobile
Reply

Marsh Posté le 28-10-2008 à 16:06:33    


N'empêche que moi aussi j'avais dit une connerie quelques jours avant :(
Alors t'aurais pu te foutre de moi à ce moment-là aussi :D
 
Mais bon, on est un tout petit peu HS là.

Reply

Marsh Posté le 29-10-2008 à 20:53:01    

CyberDenix a écrit :

Le monsieur te dit que tu es en train de transformer ton php en java (et c'est pas vraiment un compliment...).
 
Comme tu as transformé ton code php en bytecode, il faudra à chaque ligne que ton module BCompiler retransforme le bytecode en code php, avant interprétation du code php.
 
Niveau perf, c'est moisi par rapport à une application native php.


Je pense pas, tout code PHP est "compilé en bytecode et c'est ce bytecode qui est ensuite éxécuté par php. On gagne donc le parsage du php et la "compilation" en bytecode. C'est donc plus rapide à l'éxécution, ce n'est pas de l'obfuscation mais bel et bien une sorte de compilation dans le language intermédiaire de php :)

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed