Sécurisation du code source - PHP - Programmation
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
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?
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...
Marsh Posté le 20-10-2008 à 18:41:52
spamoi a écrit : $379 pour la version qui permet de le faire |
ç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 )
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 ?
Marsh Posté le 20-10-2008 à 20:02:07
Bon bah finalement c'est pas compliqué, en 3 lignes
Code :
|
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 :
|
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
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/
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...
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
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?
Marsh Posté le 21-10-2008 à 13:35:43
ReplyMarsh Posté le 21-10-2008 à 13:43:53
CyberDenix a écrit : Verrouiller un langage open source... c'est pas très sérieux... |
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* ...
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...
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
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 !
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
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+
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
Marsh Posté le 25-10-2008 à 10:20:23
sub1 a écrit : Hello, |
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
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.
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
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.
Marsh Posté le 27-10-2008 à 14:36:21
Tu peux te passer de faire ce genre de réfléxion totalement inutile.
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
Mais bon, on est un tout petit peu HS là.
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...). |
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
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!