web-dev-qa-db-fra.com

Meilleure solution pour protéger PHP code sans chiffrement

Tout d'abord, je ne cherche pas le miracle ... Je sais comment PHP - fonctionne et qu'il n'y a pas vraiment moyen de cacher mon code aux clients sans utiliser le cryptage. Mais cela vient avec le coût d'une extension à installer sur le serveur en cours d'exécution.

Je cherche quelque chose de différent cependant ... Je ne cherche pas à chiffrer mon code, ni même à le brouiller. Il existe de nombreux PHP - scripts sans code crypté/obscurci, mais ce sont des applications commerciales. Par exemple, les applications de forum vBulletin et/ou IP.Board.

Je veux juste savoir quelle approche ces gars-là utilisent pour leurs applications ...

Je suis également ouvert à toute autre suggestion.

Veuillez noter que je suis une personne célibataire et que je ne travaille pas pour une entreprise. Mon produit est également très spécifique, il ne se vendra pas beaucoup. Je veux simplement que vous sachiez que je ne peux pas me permettre de consulter un professionnel de la justice pour poursuivre quelqu'un ou pour préparer une licence commerciale. Je cherche simplement un moyen simple de protéger mon produit simple, s'il est effectivement possible, d'une manière ou d'une autre ...

67
Ricardo Amaral

Obscurcir les choses ne peut que gêner vos clients légitimes et respectueux des lois, tandis que les personnes qui voudraient vous arnaquer ne sont de toute façon pas vos clients payants. (édité d'autres pensées sur l'obscurcissement)

Une autre suggestion pour protéger votre logiciel: créez un modèle d'entreprise dans lequel le code est une partie incomplète de la valeur de votre offre. Par exemple, vendez des licences de produit avec un accès à certaines données que vous gérez sur votre site ou accordez une licence pour le produit sur un modèle d'abonnement ou avec le support client.

Concevoir un CLUF est une question juridique, pas un problème de codage. Vous pouvez commencer par lire le texte du contrat de licence pour les produits et les sites Web que vous utilisez. Vous trouverez peut-être des détails intéressants!

La création d'une licence propriétaire est extrêmement flexible et constitue probablement un sujet dépassant le cadre prévu de StackOverflow, car il ne s'agit pas strictement de codage.

Certaines parties d’un CLUF qui me viennent à l’esprit:

  • Limitez votre responsabilité si le produit contient des bugs ou cause des dommages.
  • Préciser comment le client peut utiliser son logiciel sous licence, pendant combien de temps, sur combien de machines, avec ou sans droits de redistribution, etc.
  • En vous donnant le droit de vérifier leur site afin que vous puissiez appliquer les licences.
  • Que se passe-t-il s'ils violent le CLUF, par exemple ils perdent leur privilège d'utiliser votre logiciel.

Vous devriez consulter un professionnel du droit pour préparer un CLUF commercial.

edit: Si ce projet ne peut justifier les frais d'un avocat, consultez ces ressources:

35
Bill Karwin

Vous devez considérer vos objectifs:

1) Essayez-vous d'empêcher les gens de lire/modifier votre code? Si oui, vous aurez besoin d'un outil de dissimulation/cryptage. J'ai utilisé Zend Guard avec un bon succès.

2) Essayez-vous d'empêcher la redistribution non autorisée de votre code ?? Une licence CLUF/propriétaire vous donnera le pouvoir légal d'empêcher cela, mais ne l'arrêtera pas réellement. Un schéma de clé/d’activation vous permettra de surveiller activement l’utilisation, mais peut être supprimé à moins que vous ne chiffriez également votre code. Zend Guard dispose également de fonctionnalités permettant de verrouiller un script particulier sur une machine cliente donnée et/ou de créer des versions limitées du code si vous le souhaitez.

Je ne suis pas familier avec vBulletin et autres, mais ils auraient soit besoin de chiffrer/obscurcir, soit faire confiance à leurs utilisateurs pour qu'ils agissent correctement. Dans ce dernier cas, ils ont la protection d'avoir un CLUF qui interdit les comportements qu'ils jugent indésirables, et le système juridique pour sauvegarder les violations du CLUF. 

Si vous n'êtes pas prêt/en mesure d'intenter une action en justice pour protéger votre logiciel et que vous ne voulez pas chiffrer/obscurcir, vos options sont les suivantes: a) publiez-le avec un CLUF afin que vous disposiez d'une option légale si vous en avez besoin et espérons que tout ira pour le mieux, ou b) demandez-vous si une licence open source pourrait être plus appropriée et permettre simplement une redistribution.

14
Jim OHalloran

Vous pouvez utiliser un compilateur php:

Roadsend

phc

8
grepsedawk

Je n'ai pas consulté le code source de VBulletin depuis quelque temps déjà, mais la façon de le faire en 2003 consistait à intégrer un appel à leur serveur dans le code. IIRC, il était sur une très longue ligne de code (comme 200-300 + caractères longs) et était divisé en plusieurs concaténations de chaînes et autres. 

Si vous l'avez piraté, cela n'a rien de "mauvais" - le forum fonctionnait toujours à 100%. Mais l'adresse IP de votre serveur était enregistrée avec d'autres informations et ils s'en servaient pour enquêter et engager des poursuites. 

Votre numéro de licence a été incorporé dans cet appel, afin qu'ils puissent facilement suivre le nombre d'adresses IP/de sites Web sur lesquels une copie sous licence s'exécutait.

6
Alarion

Si vous ne pouvez pas créer une "application cloud" que vous hébergez vous-même et auquel ils accèdent via le Web, vous pouvez envisager de créer une appliance virtuelle à l'aide d'un serveur virtuel (à partir de VMWare, Parallels, Sun, etc.) et installer une "lite "version de Linux sur cela. Placez votre code PHP dans l'environnement virtuel et installez la machine virtuelle sur leur serveur. Assurez-vous de créer un moyen d'empêcher le chargement dans la racine. Bien entendu, cela impliquerait de rendre visite physiquement au client.

2
McG

à mon avis, mais au cas où votre programme de code php est écrit pour un modèle autonome ... la meilleure solution est c) Vous pouvez envelopper le php dans un conteneur comme Phalanger (.NET). Comme tout le monde le sait, le système est étroitement lié au système, en particulier si votre programme est destiné aux utilisateurs Windows. vous pouvez créer votre propre algorithme de protection dans un langage de programmation Windows tel que .NET/VB/C # ou tout ce que vous connaissez dans les jeux .NET prog.lang.family.

1
achy

Ils distribuent leurs logiciels sous une licence propriétaire . La loi protège leurs droits et empêche leurs clients de redistribuer la source, bien qu’il n’y ait aucune difficulté réelle à le faire.

Mais comme vous le savez peut-être, la violation du droit d'auteur (piratage) de produits logiciels est un phénomène assez courant .

1
Eran Galperin

Voir notre SD PHP Obfuscator . Gère d'énormes systèmes de fichiers PHP. Aucune exigence d'exécution sur le serveur PHP. Pas de frais supplémentaires d'exécution.

[EDIT mai 2016] Une réponse récente indiquait que Zend ne gère pas PHP 5.5. L'obfuscateur SD PHP le fait.

0
Ira Baxter

Le seul moyen de protéger réellement vos applications php des autres est de ne pas partager le code source. Si vous postez votre code quelque part en ligne, ou si vous l'envoyez à vos clients par un moyen quelconque, d'autres personnes que vous n'ont accès au code.

Vous pouvez ajouter un filigrane unique à chaque copie de votre code. De cette façon, vous pouvez retracer les fuites jusqu'à un seul client. (Mais cela vous aidera-t-il, puisque le code est déjà hors de votre contrôle?)

La plupart du code que je vois est accompagné d'une licence et peut-être d'une garantie. Une ligne en haut du script indiquant aux personnes de ne pas modifier le script sera peut-être suffisante. Soi; quand je trouve du code source non ouvert, je ne l'utilise pas dans mes projets. Je suis peut-être un peu dupe, mais je m'attends à ce que ppl n'utilise pas mon code non-OSS!

0
qualbeen

Zend Guard ne supporte pas php 5.5 et est facile à inverser, allez sur http://www.ioncube.com pour les obscurcissements http://wwww.phplicengine.com peut autoriser les scripts à distance ou localement.

0
Igdrazil