42 votes

Comment emballer et vendre une application Django ?

Actuellement, j'héberge une application Django que j'ai développée moi-même pour mes clients, mais je commence à envisager de la vendre aux gens pour qu'ils l'hébergent eux-mêmes.

Ma question est la suivante : Comment puis-je emballer et vendre une application Django, tout en protégeant son code contre le piratage ou le vol ? Distribuer un tas de fichiers .py ne semble pas être une bonne idée, car les personnes à qui je la vends pourraient simplement en faire des copies et les transmettre.

Je pense que pour les besoins de ce problème, on peut supposer que tous ceux qui achètent ce produit utilisent la même configuration (LAMP).

63voto

dbr Points 66401

N'essayez pas d'obscurcir ou de crypter le code - cela ne fonctionnera jamais.

Je suggère de vendre l'application Django "en tant que service" - soit en l'hébergeant pour eux, soit en leur vendant le code. et soutenir . Rédigez un contrat qui leur interdit de le redistribuer.

Cela dit, si vous êtes déterminé à obscurcir le code d'une manière ou d'une autre, vous pouvez distribuer des applications Python entièrement en .pyc (code d'octet compilé Python). C'est ainsi que fonctionne Py2App.

Il sera toujours redistribuable, mais il sera très difficile de modifier les fichiers, ce qui vous permettra d'ajouter des éléments de base concernant les licences et de ne pas faire échouer le projet par quelques personnes. # s..

Comme je l'ai dit, je ne pense pas que vous réussirez à lutter contre le piratage via le cryptage ou l'obscurcissement, etc. En fonction de vos clients, un simple contrat, et peut-être quelques vérifications vraiment basiques iront beaucoup plus loin qu'un système de décryptage compliqué (et rendront l'expérience de l'utilisation de votre application plus agréable). meilleur au lieu de En espérant que cela ne soit pas pire )

5 votes

Peut-être, dans le cas d'un contrat, pourriez-vous placer des "pièges" (identifiants uniques, latents et difficiles à trouver) dans votre code (comme ils le font sur les cartes) afin de pouvoir identifier de manière concluante quel client a divulgué votre code.

15voto

Mike Points 1186

Vous pouvez regrouper le tout sous la forme d'une instance de machine Amazon (AMI), puis leur demander d'exécuter votre application sur le serveur d'Amazon. Amazon EC2 . L'avantage de cette solution est qu'Amazon va s'occuper de la facturation pour vous Et comme vous distribuez l'image complète de la machine, vous pouvez être certain que tous vos clients utilisent la même pile LAMP. L'AMI est une image machine cryptée qui est configurée comme vous le souhaitez.

Vous pouvez demander à Amazon de facturer au client des frais uniques, des frais d'utilisation ou des frais mensuels.

Bien entendu, cette solution exige que vos clients hébergent leur application chez Amazon et paient les frais correspondants.

2 votes

Amazon EC2 pourrait être trop cher pour une petite application Django, car vous obtenez soit une machine virtuelle dédiée complète, soit rien. Il coûte au moins 80 $ par mois, je crois.

0 votes

@luboshasko 5$ par mois

14voto

Cody Brocious Points 24042

La façon dont je m'y prendrais est la suivante :

  1. Crypter l'ensemble du code
  2. Écrire un installateur qui contacte le serveur avec le nom d'hôte de la machine et le fichier de licence et obtient la clé de décryptage, puis décrypte le code et le compile en bytecode python.
  3. Ajouter (dans l'installateur) un module qui vérifie le nom d'hôte de la machine et le fichier de licence lors de l'importation et meurt s'il ne correspond pas.

De cette façon, l'utilisateur ne doit contacter le serveur que lorsque le nom d'hôte change et lors de la première installation, mais vous obtenez une petite couche de sécurité. Vous pourriez changer le nom d'hôte en quelque chose de plus complexe, mais ce n'est vraiment pas nécessaire - quiconque veut pirater ce système le fera, mais un mécanisme simple comme celui-ci permettra aux personnes honnêtes de rester honnêtes.

0 votes

Oui, ça semble être la meilleure solution. Cela devrait "déjouer" 98,58% de mes clients.

0 votes

Pourquoi le crypter ? S'ils doivent contacter votre machine de toute façon, il suffit de télécharger le code .pyc directement par l'intermédiaire de l'installateur, et il n'y aura jamais de fichiers .py sur leur système (sauf ceux qui sont configurables par l'utilisateur ou autre).

1 votes

Ensuite, vous rencontrez des problèmes avec les fichiers pyc entre les versions. En faisant la compilation sur la machine locale, on élimine ces problèmes.

10voto

James Bennett Points 6318

"Chiffrer" le code source de Python (ou le bytecode, ou vraiment le bytecode de tout langage qui l'utilise -- pas seulement Python) est comme ces petits trucs JavaScript que certaines personnes mettent sur les pages web pour essayer de désactiver le bouton droit de la souris, en déclarant "maintenant vous ne pouvez pas voler mes images !".

Les solutions de contournement sont triviales et n'arrêteront pas une personne déterminée.

Si vous voulez vraiment vendre un logiciel Python, vous devez agir sérieusement. Payez un avocat pour rédiger les termes de la licence/du contrat, faites en sorte que les gens les acceptent au moment de l'achat, puis laissez-leur simplement le logiciel. Cela signifie que vous devrez traîner les gens devant les tribunaux s'ils violent les termes de la licence/du contrat, mais vous devrez le faire quoi qu'il arrive (par exemple, si quelqu'un brise votre "cryptage" et commence à distribuer votre logiciel), et le fait d'avoir la forme appropriée des termes juridiques déjà couchés sur le papier, avec leur signature, sera bien meilleur pour votre entreprise à long terme.

Si vous êtes vraiment que Si vous avez peur que les gens "volent" vos logiciels, optez pour un modèle hébergé et ne leur donnez pas accès au serveur. De nombreuses entreprises prospères sont basées sur ce modèle.

7voto

Jeremy Cantrell Points 7858

Vous ne pourrez jamais cacher le code source aux personnes qui le veulent vraiment. Il est préférable de se rendre compte de ce fait maintenant et de s'épargner des maux de tête plus tard.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X