[Résolu] Proteger son code PHP

Proteger son code PHP [Résolu] - PHP - Programmation

Marsh Posté le 19-03-2011 à 13:23:19    

Bonjour, je travaille actuellement sur un nouveau projet PHP traitant des donnees sensibles qui devront etre encrypter dans une base de donnees.
 
L'encryptage de ces donnees ne pose pas de probleme en soi, il y a des fonctions PHP pour ca (ie MCRYPT). Mais j'aimerais proteger les cles d'encryptage qui seront en claires dans le code PHP. Elles ne seront bien entendu pas accessibles de l'exterieur, mais l'application etant hebergee sur un serveur tierce, l'admin pourra y acceder.
 
Mis a part "compiler" mon code pour generer un code binaire je ne vois pas trop de solution. Je sais meme pas si c'est possible de "compiler" un code PHP.
 
Merci d'avance pour votre aide


Message édité par azel le 31-03-2011 à 04:33:58
Reply

Marsh Posté le 19-03-2011 à 13:23:19   

Reply

Marsh Posté le 19-03-2011 à 13:39:47    

http://www.zend.com/en/products/guard/


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 19-03-2011 à 14:09:26    

Merci Esox_ch, je suis egalement tombe sur ce produit en cherchant sur Google. Ca semble etre une alternative interessante, mais peut etre un peu lourde.
 
Avant de me lancer la dedans, j'aimerais voir si y a des solutions plus legere me permettant uniquement de proteger les cles et non l'ensemble du code.

Reply

Marsh Posté le 19-03-2011 à 14:18:44    

Je viens de trouver cette extension PHP: BCompiler (http://www.php.net/manual/en/book.bcompiler.php). Ce semble etre une alternative interessante!

Reply

Marsh Posté le 19-03-2011 à 17:07:54    

Oui sauf que  

Citation :


This extension is EXPERIMENTAL. The behaviour of this extension including the names of its functions and any other documentation surrounding this extension may change without notice in a future release of PHP. This extension should be used at your own risk.


 
Jamais je n'utiliserais quelque chose du genre sur un serveur de prod


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 21-03-2011 à 09:47:24    

+1 pour esox_ch.
 
Je vais devoir trouver une autre maniere de faire ca alors. J'ai propose la solution Zend Guard a ma direction mais cet outil est beaucoup trop onereux pour notre projet.

Reply

Marsh Posté le 31-03-2011 à 03:59:13    

Au final nous allons utiliser ionCube Encode, qui est un outils plus ou moins similaire a Zend Guard. Pour ce que ca interesse: http://www.ioncube.com/sa_encoder.php

Reply

Marsh Posté le 31-03-2011 à 07:33:25    

un code compilé se décompile. Ca n'apporte pas grand chose de mon point de vu. Mais je vais quand même tester les encodeurs de PHP par curiosité, quand j'aurais un peu de temps.


---------------
Aimer les femmes intelligentes est un plaisir de pédéraste. (Charles Baudelaire) - Vous vulgarisez :o (Jean-Kevin Dubois)
Reply

Marsh Posté le 31-03-2011 à 09:39:41    

philippe06 a écrit :

un code compilé se décompile. Ca n'apporte pas grand chose de mon point de vu. Mais je vais quand même tester les encodeurs de PHP par curiosité, quand j'aurais un peu de temps.


 
ça a quelle tête du bytecode PHP décompilé? :??:


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 31-03-2011 à 19:55:28    

esox_ch a écrit :

 

ça a quelle tête du bytecode PHP décompilé? :??:

 

J'ai déjà décompilé du Java compilé sans "obfuscation", c'est tout à fait utilisable.

 

J'ai "triché" à un TP noté de Master 2 ainsi: le prof a donné la solution sous forme d'executable, on devrait coder le truc plusieurs fois on observant à chaque fois une certaine "architecture" (c'était un cours sur les paradigmes en matière de programmation répartie / distribuée). Et bien j'ai pu reservir le code décompilé presque à l'identique, en renommant quelques noms de variables et en modifiant quelques prototypes de fonctions, c'est passé nickel. :o


Message édité par philippe06 le 31-03-2011 à 19:56:02

---------------
Aimer les femmes intelligentes est un plaisir de pédéraste. (Charles Baudelaire) - Vous vulgarisez :o (Jean-Kevin Dubois)
Reply

Marsh Posté le 31-03-2011 à 19:55:28   

Reply

Marsh Posté le 02-04-2011 à 14:09:06    

Ah bon ... alors si t'as pu faire ça en java (qui, au passage, est livré avec tout ce qu'il faut pour le décompiler), il n'y a aucune raison que ce ne soit pas exactement pareil avec PHP passé dans un "compilateur" qui est là entre autres pour éviter qu'on voit la source ... :heink:
Bref, quand on sait pas, on se tait :o


Message édité par esox_ch le 02-04-2011 à 14:09:35

---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 02-04-2011 à 18:33:02    

Pas besoin d'un code source particulièrement clair pour trouver quelques clés de chiffrement. Et de toute façon, si il s'agit d'une application web comme c'est souvent le cas avec PHP, l'admin système peut aussi simplement regarder les logs d'acces générés pour avoir les identifiants "applicatifs", qui permettent logiquement d'accéder au contenu "sensible".


---------------
Aimer les femmes intelligentes est un plaisir de pédéraste. (Charles Baudelaire) - Vous vulgarisez :o (Jean-Kevin Dubois)
Reply

Marsh Posté le 06-04-2011 à 10:28:00    

Donc si on suit ton raisonnement il n'y a aucun maniere de securiser son code?
Zend Guard & Ioncube Encoder sont pourtant vendu pour ca... arnaque?

Reply

Marsh Posté le 06-04-2011 à 14:05:36    

Ca n'est pas une arnaque, ca complique une démarche de "reversing", ce qui a un intérêt si l'attaquant est faible techniquement, si le reversing présente peu d'intérêt ou si le code est suffisamment bien "mélangé" pour rendre la modification du code tellement pénible que l'attaquant va préférer réécrire le code lui même.
 
Simplement à partir du moment où tu ne contrôles pas l'environnement d'exécution du code, tu ne peux pas sécuriser totalement ton code. Typiquement, une protection par serial d'un logiciel sur PC est toujours cracké, avec plus ou moins de difficultés.
 
Et sur un serveur web c'est pire, comme je l'expliquais.


---------------
Aimer les femmes intelligentes est un plaisir de pédéraste. (Charles Baudelaire) - Vous vulgarisez :o (Jean-Kevin Dubois)
Reply

Marsh Posté le 06-04-2011 à 19:36:42    

Sauf que ça n'a strictement rien à voir :heink:
 
Passer un code dans une moulinette parce que tu veux cacher la valeur par défaut d'une variable $secret, c'est pas une bonne idée parce que, là, philippe06 a raison => Tu peux te faire choper par derrière.
Si par contre, ce que tu veux protéger c'est tes algos/ton code, alors dans ce cas ces solutions vont faire ton bonheur. Ton bytecode pourra peut-être être décompilé (et même, je demande à voir), il ne sera pas identique à ton code de départ => Tes algos seront probablement sauvés.


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Sujets relatifs:

Leave a Replay

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