web-dev-qa-db-fra.com

Devrais-je inclure une méthode d'auto-instrument à mes applications?

J'ai récemment eu une expérience négative, où le client renfermé de la facture, mais mon homme moyen a déjà téléchargé notre logiciel et concevoir au serveur de clients. Le client s'est avéré être un criminel connu et, bien sûr, il a changé tous les mots de passe possibles du serveur.

Cependant, je peux toujours accéder au panneau d'administration du CMS. Malheureusement, il s'avère que mon logiciel est très sécurisé. Essayé de SQL-Injection, simulant le téléchargement de l'image, etc. Cependant, je ne peux pas pirater mon propre logiciel. Quoi qu'il en soit, je me prépare à poursuivre cette personne, donc ce n'est pas Le problème .. Je pense juste à penser maintenant, peut-être qu'il devrait y avoir une méthode d'auto-réduite backend. Donc, si un cas similaire se produit, j'ai la possibilité de tuer tuer le logiciel.

Ma propre idée est de cacher une certaine fonction dans les fichiers principaux. Encodez-le avec base64, de sorte que cela ne serait pas évident. Alors quelque chose comme ça:

eval(base64_decode('ZWNobyAnSGVsbG8Gd29ybGQhJzs=')); // echo 'Hello world!';

Et essentiellement, faites un petit script, qui prend tous les fichiers du logiciel, Chmod les convaincus et les supprime ensuite.
[.____] Mes nouvelles versions du CMS, tous ont des filemanateurs que je pourrais utiliser pour faciliter piratage . Mais si l'accès au panneau d'administration est limité.

Pour être très clair, ceci est uniquement destiné aux logiciels de développement, dans mon serveur personnel ou au serveur de clients (dernière partie étant éthiquement discutable.) Donc, si mon client doit voler mon logiciel .. Cela ne sera pas inclus dans un logiciel commercial.
[.____] et être encore plus clair, nous parlons de celles-ci rare emplois indépendants. Je pense que son assez logique, ce travail de contrat n'a pas besoin de telles méthodes. Nous parlons donc de ces clients Jumprisk, uniquement en mode de développement - lorsque le projet est prêt, il s'agirait évidemment, ce serait une très très très contraire à l'éthique Backdoor avoir à l'intérieur de votre logiciel.

  1. Ethiquement est-ce une bonne idée? (Garder à l'esprit que, évidemment, je vais le supprimer, lorsque le projet a été 100% et que tout est payé)
  2. Avez-vous déjà eu des gars à Hack votre propre logiciel, en raison de problèmes similaires avec le (s) client (s)?
  3. Toute recommandation sur cette idée, code et méthode sage?
  4. Quels peuvent être les inconvénients éventuels ou les répercussions des scripts d'auto-instrument?

ma conclusion à ce sujet

Est un peu triste, que toutes les réponses ont été ciblées sur les cas contractés. C'était vraiment ma faute, que je ne l'ai pas fait plus clair dans ma question. Juste pensé que c'est assez clair, qu'il n'ya pas de point dans le commutateur Kill-Switch. Lorsque vous êtes protégé par le contrat.
[.____] Toutefois, si vous faites un travail de contrat .. alors cela devrait être indiqué dans le contrat - cela le rend légal, même à l'intérieur du serveur de clients. Cependant, avoir des commutateurs tueurs à l'intérieur de mon propre serveur personnel est une entreprise de NoboMeies (c'est ce que j'ai vraiment voulu savoir.)

J'ai décidé de faire le script de Kill-Switch pour mon CMS. Principalement parce que cela semble un défi intéressant. Mais aussi, que je pourrais utiliser cela pour mes œuvres non contractées où le client est un ami d'un ami d'un ami .. Je ne l'utiliserai probablement pas sur le serveur de clients, mais..pour les cas, où le client ou certains Les Middlemen ont accès à mon serveur .. Mon logiciel est volé ou "déplacé sans ma connaissance", puis je ne suis pas payé et ils ont réduit l'accès au logiciel.

J'ai lu beaucoup beaucoup de sujets ici, où ils recommandent d'envoyer un avertissement, puis de supprimer la page. Eh bien, j'ai vu un problème de problème, comme lorsque je traite avec une personne. Qui va simplement le copier quelque part ailleurs (peut-être le relancer et le vendre) et me dit que cela a été retiré. Et aussi, je ne ferais pas "éteindre le site", mais supprimez-le. Cependant, je suppose que c'est toujours illégal d'accéder à mon serveur de clients et de la supprimer. Ou au moins, accédez à la backend au four et non du FTP. Pour cela, je vous remercie tous, qui répondit.

39
Kalle H. Väravas

Je ne suis pas un avocat. On dirait que vous en avez déjà un à des fins de poursuivre votre client; Pendant que vous l'avez sur la maintenance, je recommanderais de recevoir leurs conseils à ce sujet.

Il existe d'autres questions sur ce site qui traitent des "commutateurs de tuer" et d'autres moyens de désactiver le logiciel pour lequel le développeur n'a pas reçu de compensation. Il est généralement considéré comme une mauvaise idée de simplement construire un logiciel "clé en main" (où vous le développerez, puis transférer pleinement les droits sur le client), sans le contrat ayant stipulé cette possibilité.

Tout d'abord, si votre contrat n'indique pas spécifiquement que vous pouvez désactiver le logiciel de non-paiement ou que le client n'a aucun droit au logiciel avant que le paiement soit reçu intégralement, vous ne pouvez pas renvoyer de "interrupteur de tuer" sans être en violation du contrat. Absent des mots au contraire, "la possession est de neuf dixièmes de la loi", donc c'est son logiciel une fois qu'il est donné la possession et de le détruire, il serait semblable à dynamiter un nouveau bâtiment de bureaux que vous aviez construit pour lui s'il ne voulait pas 't payer pour cela.

Le deuxième point suit; Tout contrat que vous proposez à tout client devrait avoir une clause à l'effet de: "Transferts de propriété intellectuelle sur la satisfaction du contrat". Cela signifie que même si vous lui avez donné une copie du logiciel à utiliser, jusqu'à ce qu'il soit payé intégralement, il ne le possède pas. Cela vous donnerait le droit de désactiver son ou toute copie du logiciel pour une raison quelconque jusqu'à ce que le paiement complet ait été reçu, car il est toujours le vôtre et que vous pouvez faire comme vous s'il vous plaît. Maintenant, il a violé le contrat et vous ne l'avez pas fait, donc le cas est beaucoup plus facile pour votre avocat de présenter et, pendant ce temps, votre client n'obtient aucun bénéfice de ses biens malheureux.

L'analogie à un entrepreneur de bâtiment détient: Une fois qu'un bâtiment en construction est capable d'être sécurisé contre une entrée illégale, c'est et l'entrepreneur conservera généralement toutes les copies de toutes les clés des locaux jusqu'à ce que le travail soit complet et signé, et paiement reçu en totalité. Même après que les touches soient remises, si le paiement tombe tout au long, il peut attacher un privilège sur la propriété et à l'extrême le saisit. La même chose est vraie ici; Vous pouvez donner au client une clé pour entrer dans le logiciel, mais vous détenez la touche "Master", et il n'obtient pas accès administratif avant d'être payé en totalité. S'il peut entrer maintenant et ne vous paie pas, vous pouvez simplement "changer les serrures" et le verrouiller hors du logiciel.

Cependant, vous avez donné à votre client la clé "Master" du logiciel et il est parti et a changé tous les serrures, alors maintenant que vous ne pouvez pas entrer. Ce n'est pas la façon dont il devrait fonctionner. Vous pouvez toujours réclamer des dommages-intérêts, mais entre-temps votre client tordu peut utiliser le logiciel, le copier ailleurs (c'est une grosse chose qui ne peut pas arriver à un entrepreneur; s'il prend son bâtiment, il n'a pas à craindre que vous "VE a fait une copie gratuite exacte sur un autre lot), etc., etc. Fondamentalement, votre seul remède consiste à appliquer le paiement intégral, car vous ne pouvez pas vous garantir que vous avez récupéré toutes les copies du logiciel. Vous ne seriez probablement pas heureux d'obtenir votre logiciel, même si vous pouviez garantir qu'il n'avait plus de copies; C'est probablement un travail personnalisé que vous ne pouvez pas simplement vous retourner et vendre à quelqu'un d'autre.

Comprenez cela, quels que soient vos droits sur le logiciel, ses données lui appartiennent. Vous ne pouvez pas le toucher. Vous pouvez arrêter son accès au logiciel que vous avez construit, mais si vous détruisez ses données, c'est comme brûler ses possessions après avoir repoussé le bâtiment que vous l'avez construit qu'il n'a pas payé. Vous n'avez pas de droit à cette donnée et devez le laisser en place sur son ordinateur intact ou si les données ne peuvent pas être consultées de manière raisonnable sans votre logiciel, vous devez le supprimer de l'enchevêtrement avec votre logiciel et la donner à lui dans un format utilisable (comme une base de données consommable humaine, ou des copies imprimées ou électroniques).

38
KeithS

Non. Si vos clients ont découvert que vous seriez lynché. Ce n'est pas du tout sécurisé. Quelqu'un, certains comment découvriront-il comment le déclencher puis vous avez soudainement la tâche de contacter tous vos clients pour en parler et pourquoi ils doivent faire un patch d'urgence.

Si vous faites pirater, vous vous ouvrez également des procédures pénales. Je suppose que vous avez la preuve que vous possédez toujours le site? Que vous avez le droit d'y accéder? Le coût de son entreprise pourrait être "astronomique"

Il y a des alternatives acceptables. Placez un filigrane sur le site, chaque page affiche un message. Sur paiement, vous pouvez supprimer le filigrane.

19
Ian

Cela semble être une idée phénoménale mauvaise qui pourrait vous atterrir en prison.

  1. C'est contraire à l'éthique. Un mauvais comportement de votre client ne vous convient pas de pirater leur système.
  2. C'est illégal. Ceci est arrivé auparavant , avec de mauvais résultats pour les parties incroyables.
  3. C'est inutile. Qu'auriez-vous éventuellement faire avec ce porte-backdoor qui ne vous mènerait pas en difficulté? Souhaitez-vous chanter du client?
  4. C'est bête. Même si vous pouviez le faire sans vous faire prendre, les risques potentiels dépassent de loin tout gain possible.
17
Ken Liu

S'il vous plaît ne demandez pas aux programmeurs, demandez à un avocat. J'imagine au moins que vous voudriez inclure une clause de votre contrat en disant que vous avez le droit de faire ce que votre question envisage de faire. (Le "préjudible irréparable" de certains contrats vous permettra d'obtenir une ordonnance du tribunal de fermer immédiatement le logiciel jusqu'à ce que la Cour ait la chance de le résoudre?) Je pense qu'une ordonnance du tribunal serait beaucoup plus sûre pour vous qu'un la bombe de code (qui pourrait être considérée comme criminelle, si un tribunal a constaté que vous ne possédez pas le logiciel, il pourrait s'agir de la destruction des biens, aux États-Unis, il pourrait éventuellement relancer les sections de cryptage numérique de la Loi sur le millénaire numérique, etc. Je pouvais Imaginez gagner des dommages-intérêts dans le tribunal civil et être condamné à la Cour pénale).

Les règles varieront en fonction de votre lieu de vie et de votre client, alors je pense vraiment que vous voudriez avoir un avocat.

12
psr

Ethiquement est-ce une bonne idée?

Absolument pas. Non seulement cela vous fait paraître peu professionnel à des clients honnêtes et monétaires, mais je pense que c'est aussi préjudiciable à la profession dans son ensemble. Les ingénieurs logiciels ont des responsabilités envers leur client ou leur employeur, y compris la livraison de logiciels de la plus haute qualité. Devrait-il y avoir un différend sur le paiement ou les contrats, il existe des canaux appropriés. Réduire la qualité de votre logiciel n'est pas un canal approprié.

Avez-vous déjà dû pirater votre propre logiciel, en raison de problèmes similaires avec le (s) client (s)?

Jamais, bien que je n'ai jamais fait de contrat ou de travail indépendant. J'ai toujours été employé d'une organisation plus grande (qui, dans certains cas, travaillait dans un contrat). Pour moi, la pensée est impensable. Je préférerais livrer des logiciels que je suis fier d'avoir mon nom imputé et d'être trompé par un petit pourcentage de clients que de réduire la qualité de mon logiciel ainsi que de mes responsabilités éthiques aux utilisateurs du système.

Toute recommandation sur cette idée, code et méthode sage?

Ne le fais pas.

Quels peuvent être les inconvénients éventuels ou les répercussions des scripts d'auto-instrument?

Outre les problèmes éthiques évidents, je serais inquiet des problèmes juridiques. Je ne sais pas si la sabotage de votre propre travail est légale, et même si c'est le cas, l'utilisation d'un tel exploit pourrait ne pas être.

5
Thomas Owens

Il suffit de mettre en place un module de licence avec des licences de temps limitées qui désactiveront le logiciel à expiration. Il s'agit d'une pratique bien connue dans l'industrie du logiciel et de vos clients ne devraient pas s'y opposer, car vous supprimerez la limitation par la suite.

Cela pourrait également être utile lorsque vous souhaitez limiter les fonctionnalités et proposer différentes versions de votre produit.

Les interrupteurs de tuer ont juste trop de risques et ne valent pas la peine.

3
OliverS

Une caractéristique d'auto-destruction secrète est une idée horrible . Oui, vous serez intelligent et vous aurez peut-être l'occasion de le coller à un client affreux à l'avenir, mais sa façon de devenir plus de problèmes que sa valeur.

  1. Vous ne serez toujours pas payé pour le travail que vous avez fait. Oui, l'autre personne n'utilisera pas votre code; Mais vous souffrirez toujours du manque de paiement. Vous pensez que certains criminels décideront de payer la personne qui a déjà apporté leur site une fois à distance? Ils trouveront un nouveau chump pour créer leur site gratuitement.

  2. Utiliser la séquence d'autodestruction, vous permet de responsables de vos propres problèmes juridiques. Selon les juridictions, vous pouvez facilement être considéré comme pirater/détruire leurs données (quand ils étaient sur le point de payer et avaient beaucoup de circonstances atténuantes pour la raison pour laquelle ils n'ont pas payé plus tôt). Même si vous n'êtes pas condamné/poursuivi avec succès, vous pouvez toujours montez des frais juridiques lourds et avoir beaucoup plus de problèmes que sa valeur.

  3. Et si un bon bon paiement navigue votre code plus tard (ou a un ami CS qui vient de la naviguer à une touche mineure), voit la fonction avec une partie Weird Base64, est comme ce qui est-ce, essaie de l'exécuter et supprime accidentellement l'application Web. (Et ça fait pendant que vous êtes en vacances, il faut donc un certain temps pour réparer)? Ou post un tas d'examens publics sur vous partout indiquant que vous êtes contraire à l'éthique et que vous laissez des backdans dans votre travail? Bien sûr, vous pouvez le supprimer du produit fini après leur paiement, mais avec VCS, ils peuvent parcourir une source plus ancienne ou non vouloir que vous surveille après leur paiement (et ce serait une conversation gênante; oui j'ai besoin d'un compte à nouveau, car je n'ai pas besoin d'un compte, car je n'ai pas besoin d'un compte, car je n'ai pas besoin d'un compte. 't enlevé l'auto-destructrice secrète Backdoor).

  4. Et si le criminel sauvegarder ses données? Vous supprimez leur serveur Web avec un porte-backdoor secret, le site est hors ligne pendant une journée ou deux pendant qu'ils (ou un ami) trouvent la fonction de backdoor de la fonction incriminée et son retour en ligne.

À l'avenir, demandez aux gens de signer un contrat simple, de vous payer en étapes et de ne pas laisser le code laisser le serveur de développement et l'ordinateur que vous seul contrôlez jusqu'à ce que vous ayez été payé. (S'ils en ont besoin pour être en vie avant que tout le travail soit terminé; assurez-vous qu'ils sont à peu près payés pour la fraction du code qui devient en direct). S'ils veulent voir le travail comme son développement, demandez-leur de vous donner quelques adresses IP que vous allez ouvrir votre pare-feu pour votre serveur de dévéloplement (et peut-être avec un nom de CName intelligent à l'effet de unpaid_work_in_development.example.com). Ne donnez aucune garantie de disponibilité de votre serveur de dev votre serveur de devir, et si vous obtenez un moyen de trafic plus de trafic que vous devriez être (par exemple, vous trouverez qu'ils sont redirigèrent beaucoup de personnes sur votre site), fermez simplement le pare-feu jusqu'à ce qu'ils paient. S'ils ont besoin de contribuer au contenu à votre serveur Web, faites-les vous envoyer un e-mail avec les suggestions de contenu, ou créez un dossier partagé DropBox pour qu'ils disposent uniquement d'autorisations à écrire sur le petit sous-ensemble de fichiers (sous le contrôle VCS en dehors de Dropbox). peut contribuer de manière significative à (par exemple, les modèles HTML).

2
dr jimbob

Vous avez posé la mauvaise question. La chose à travailler et à améliorer n'est pas d'ajouter une sorte d'interrupteur de tuer à distance (ajouter une vulnérabilité que vous ou quelqu'un d'autre peut utiliser), mais pour résoudre votre problème réel, ce qui était une mauvaise façon de organiser le paiement et la livraison. On dirait que vous aviez besoin d'un meilleur système d'escroquer (ou tout ce que un tel concept est appelé où vous vivez).

Ne perdez pas votre temps sur un commutateur à tuer, déterminez où vous vous êtes bousillé dans la partie de l'affaire.

2
anon

Je pense que je vais concevoir une sorte de mécanisme de licence. Cela pourrait être basé sur un nombre quelconque d'idées commerciales ou infusées à domicile et pourrait entraîner une fin du logiciel après avoir expiré la licence. Au point, le système est accepté par le client et ils ont payé, vous pouvez fournir une licence complète qui n'expire pas.

Cette approche a également besoin d'une approbation d'un avocat sur votre territoire, mais a l'avantage de ne pas avoir besoin de désactiver à distance le logiciel et de stipuler que cela fait partie du système avant la main. Cependant, il me semble très triste que vous avez affaire à des personnes qui refusent de payer en premier lieu.

2
nick

N'est-ce pas appelé DRM? Tant que vous supprimez la "bombe" lors de la réception du paiement, je ne vois aucun problème juridique avec cela. Assurez-vous simplement que vous avez un correctif facilement disponible pour couvrir votre cul et montrer que vous n'avez pas eu d'intention malveillante.

Cela me rappelle la "pilule empoisonnée" dans les statuts de certaines entreprises de certaines entreprises qui sont activées en cas de prise de contrôle hostile.

À l'esprit, la mentalité exprimée par certaines des autres affiches me rappelle la raison pour laquelle certains programmeurs sont intervenus sur tout le temps. Si plus de gens mettent de telles bombes dans leur code, je pense que les programmeurs peuvent être payés plus rapidement ... je n'aurais absolument aucun problème si c'était la norme. Les gens aiment voler le travail acharné d'autres personnes. Période. Et si Apple, et al. peut me drm l'enfer de leurs affaires, alors je pense que les programmeurs indépendants peuvent aussi ...

2
veryfoolish

Sur une note pratique, le client vérifierait sûrement leurs journaux, trouvez la demande de tuerie, restaurez le code à partir d'une sauvegarde, supprimez le commutateur de jeu et reployez.

0
jah