Minify / Obfuscation de Code PHP
- Je utiliser Haxe pour générer du code PHP. (Cela signifie que vous vous écrire du code dans le langage Haxe et obtenir un tas de fichiers php après la compilation.) Aujourd'hui, un client m'a dit qu'il a besoin d'une nouvelle fonctionnalité sur un vieux projet avec Haxe. Il m'a aussi dit qu'il a changé quelques petites choses sur le code pour ses propres besoins. Maintenant, j'ai d'abord du port de ses changements sur mon code Haxe, puis ajouter la nouvelle fonctionnalité, parce que sinon ses modifications seront écrasées par la prochaine fois que je compile le projet.
Pour empêcher que cela arrive de nouveau, je suis à la recherche d'une sorte de programme qui minifies /code le code PHP. L'objectif est de rendre le code illisible /non modifiable que possible.
L'outil idéal serait de fonctionner sous Linux et de traiter l'ensemble des dossiers et tout ce qu'elle contenait des fichiers.
Personne des suggestions?
OriginalL'auteur TheHippo | 2010-01-14
Vous devez vous connecter pour publier un commentaire.
Je suis d'accord avec le commentaire, ce que vous faites est très sournois, mais au bout de 10 ans dans ce métier, je peux témoigner d'une chose: la Moitié du code que vous obtenez est tellement alambiqué qu'il pourrait aussi bien avoir été minimisé, et vraiment en fonction de/var noms sont souvent tout à fait arbitraire, j'ai édité minifiés js et il n'était pas beaucoup plus de tracas que certains unminified code.
Je ne pouvais pas trouver un tel script/programme, probablement parce que c'est le genre de contre le PHP esprit et un peu sournois, jamais le moins.
Première: Php n'est pas blanc, espace sensible, de sorte que la première étape est de supprimer tous les sauts de ligne et les espaces à l'extérieur de la chaîne.
Qu'il serait très difficile de jouer avec pour la moyenne bricoleur, un intermédiaire programmeur aurait seulement rechercher et remplacer tous ;{} avec $1\n ou quelque chose à cet effet.
La prochaine étape serait de get_defined_functions et enregistrer array ('utilisateur' clé dans le tableau retourné), vous aurez besoin d'inclure tous les fichiers pour ce faire.
Si c'est oo code, vous aurez besoin get_defined_classes. Enregistrer ce tableau.
Essentiellement, vous avez besoin pour obtenir les variables, les méthodes et les instances de classe, vous devez instancier la classe et get_object_vars sur elle, et vous pouvez fouiner et voir ce que vous pouvez obtenir beaucoup d'autres informations, comme des Constantes de classe et de vars etc.
Puis vous prenez ces listes, en boucle, à travers eux, de créer un nom unique pour chaque chose, et puis preg_replace, ou str_replace que dans tous les fichiers.
Assurez-vous de le faire sur une copie de test, et voir ce que les erreurs que vous obtenez.
Bien, juste pour être clair, il y a une place spéciale en enfer réservé aux personnes qui obscurcir pour la dissimulation de l'amour.
Découvrez: get_defined_functions get_declared_classes et il suffit de suivre les liens pour voir ce que vous pouvez faire.
Si vous avez besoin d'aide avec la regex pour le remplacement, utiliser gskinner est génial gskinner.com/RegExr
Nous parlons de génération automatique de code, ce qui semble déjà tout à fait obscure. Je ne voudrais pas passer une seconde de modifier ce code. Ne blâmer les créateurs d'un compilateur c pour la création d'obfuscation binaires?
Bonne chance, j'espère que vous trouverez ce que vous cherchez 🙂
OriginalL'auteur J. Martin
Pourquoi ne pas utiliser le php construire en fonction php_strip_whitespace()
Renvoie le code source PHP dans le nom de fichier avec PHP commentaires et les espaces supprimés. Cela peut être utile pour déterminer la quantité de code dans vos scripts par rapport à la quantité de commentaires. Ceci est similaire à l'utilisation de php -w à partir de la ligne de commande.
OriginalL'auteur RoboTamer
Nous utilisons Zend Guard pour encoder notre code PHP avec certains clients, mais comme des Perroquets dit, vous devez être sûr vous propre le code. Nous ne codent dans certaines situations, et seulement quand il est explicite que nous conservons la propriété du code, sinon Perroquets est droit, le client dispose d'un droit de le modifier.
le client dispose d'un droit de la modifier?" Ce n'est pas sur la morale, juste de ce qui est autorisé. Le Client ne dispose que d'un "droit" pour le modifier si l'accord sur les logiciel licence le permet. Il y a des licences de logiciels lorsque cela est strictement interdit, même si le code est fourni sous forme de code source. Si le modèle d'affaires permet ou interdit la modification de code dépend de la façon dont les propriétaires de gérer le produit.
OMG!", le client dispose d'un droit de la modifier?" @catsby vous êtes vraiment vraiment de problème, le client n'a PAS le droit de modifier, à tout, vraiment vous avez besoin d'apprendre le droit d'auteur.. l'auteur de toutes les œuvres toujours TOUJOURS conserve des droits sur l'œuvre et il ne peut être modifié, en fait, dans la loi, même si un client a acheté, s'il ne signe pas le contrat, puis, en théorie, vous pouvez les poursuivre en justice l'auteur, même après qu'ils l'ont acheté. (Ils auraient du aller au tribunal et essayer d'obtenir à la cour de la règle du "fair use" à l'extérieur ce qui est sueable) il n'y a pas de justification pour la multiplication de un souvent cité (dangereux) mensonge
OriginalL'auteur catsby
Je sais de Zendguard, Expressionengine utilisé pour chiffrer leur version d'essai de base de code. Vous pouvez toujours donner un aller, même si vous avez besoin de payer pour cela.
Cependant, même si je comprends la frustration d'avoir à port ses changements, je suppose qu'ils ont acheté le code? Ils ont le droit de le modifier. Vous avez juste le droit de facturer un supplément pour le port de leurs modifications 😉 Imaginez si vous avez cessé de travailler pour eux, comment pourraient-ils jamais d'embaucher quelqu'un d'autre pour mettre à jour le code?
+1, mais, juste pour être maladroit - oui, ils ont acheté le code, mais si vous ne jamais fournir d'obfuscation de code, alors c'est ce qu'ils ont acheté. Sauf si vous avez explicitement le vendre comme une plate-forme de développement, je ne vois pas le problème. Mais vous pouvez être sûr à 100% que si vous livrez en texte clair code et de le modifier ensuite, vous recevrez le soutien des maux de tête et généralement, ils ne seront pas prêts à payer.
Si vous livrez en texte clair et une licence de logiciel qui dit qu'ils ne sont pas autorisés à jouer avec lui, alors vous n'avez aucune obligation de le réparer. Dans ce cas, l'expédition d'obfuscation de code permet de décourager ce qui devrait déjà être clairement énoncés dans le contrat de licence. Si vous "vendre" le code source, alors vous pouvez vous attendre à la fois à le modifier et à le donner à des tiers sans votre permission, pour le sens habituel de "vendre".
OriginalL'auteur Parrots
Notre PHP Obfuscator fait exactement le travail de décapage des commentaires, des espaces, et le brouillage des identificateurs.
Il fonctionne à travers un ensemble complet de fichiers PHP pour s'assurer que brouillés symboles sont brouillés
de manière cohérente dans l'ensemble de ces dossiers, le contrôle de bon fonctionnement, même après de brouillage.
ÉDITION 2013: chiffre Maintenant les littéraux de chaîne afin de les rendre illisibles. Fonctionne sous Windows et sur Linux avec Wine.
OriginalL'auteur Ira Baxter
Vous pouvez essayer PHP Obfuscator ou la bcompiler extension PHP.
OriginalL'auteur Alix Axel
Je viens de trouver minify-service pour PHP. C'est vraiment utile. Ils ont dit, que le brouillage sera bientôt disponible. J'espère que c'est vrai 🙂
http://customhost.com.ua/php-minify/
3 ans plus tard
Coming soon: variables obfuscating
lien ci-dessus ne fonctionne pas pour moi (404)
OriginalL'auteur andrew