L'utilisation d'un obfuscateur est-elle suffisante pour sécuriser mon code JavaScript ?

StackOverflow https://stackoverflow.com/questions/29399

  •  09-06-2019
  •  | 
  •  

Question

Je travaille sur la création d'un outil de développement écrit en JavaScript.

Ce ne sera pas un projet open source et sera vendu (espérons-le) en tant que produit commercial.

Je recherche la meilleure façon de protéger mon investissement.L'utilisation d'un obfuscateur (code mangler) est-elle suffisante pour sécuriser raisonnablement le code ?

Existe-t-il d'autres alternatives que je ne connais pas ?

(Je ne sais pas si obfuscateur est le bon mot, c'est l'une des applications qui prend votre code et le rend très illisible.)

Était-ce utile?

La solution

Je vais te dire un secret.Une fois que vous l'aurez compris, vous vous sentirez beaucoup mieux sur le fait que l'obscurcissement Javascript n'est vraiment utile que pour économiser de la bande passante lors de l'envoi de scripts par fil.

Votre code source ne vaut pas la peine d'être volé.

Je sais que cela est un choc pour l'ego, mais je peux le dire avec confiance sans jamais avoir vu une seule ligne de code que vous avez écrite, car en dehors des très rares domaines de développement où une magie sérieuse se produit, c'est vrai pour tout code source.

Supposons que demain, quelqu'un ait déposé une pile de DVD devant votre porte contenant le code source de Windows Vista.Que seriez-vous capable de faire avec ?Bien sûr, vous pouvez le compiler et en distribuer des copies, mais cela ne représente qu'un effort de plus que de copier la version commerciale.Vous pourriez péniblement trouver et supprimer le code de vérification de licence, mais c'est quelque chose qu'un enfant brillant a déjà fait avec les binaires.Remplacer le logo et les graphiques, prétendre que vous l'avez écrit vous-même et le commercialiser sous le nom de « Vicrosoft Mista » ?Vous serez pris.

Vous pourriez passer énormément de temps à lire le code, à essayer de le comprendre et à véritablement « voler la propriété intellectuelle » que Microsoft a investie dans le développement du produit.Mais tu serais déçu.Vous constateriez que le code était une longue série de décisions banales, prises les unes après les autres.Certains seraient plus intelligents que vous ne le pensez.Certains vous laisseraient secouer la tête en vous demandant quel genre de singes ils embauchent là-bas.La plupart vous feraient simplement hausser les épaules et dire « ouais, c'est comme ça qu'on fait ça ».

Au cours du processus, vous en apprendrez beaucoup sur l'écriture de systèmes d'exploitation, mais cela ne nuira pas à Microsoft.

Remplacez "Vista" par "Leopard" et les paragraphes ci-dessus ne changent pas du tout.Ce n'est pas Microsoft, c'est logiciel.La moitié des personnes présentes sur ce site pourraient probablement développer un clone de Stack Overflow, avec ou sans regarder la source de ce site.Ce n’est tout simplement pas le cas.Le code source de Firefox et WebKit est accessible à tous.Maintenant, allez écrire votre propre navigateur à partir de zéro.Rendez-vous dans quelques années.

Le développement de logiciels est un investissement de temps.C'est de l'orgueil total d'imaginer que ce que vous faites est si spécial que personne ne pourrait le cloner sans regarder votre source, ou même que cela rendrait leur travail encore plus facile sans une quantité de copier-coller exploitable (et facilement détectable).

Autres conseils

Je suis profondément en désaccord avec la plupart des réponses ci-dessus.

Il est vrai que tous les logiciels peuvent être volés malgré leur dissimulation, mais, au moins, cela rend plus difficile le vol. extraire et réutiliser des pièces individuelles du logiciel et c'est là le point.

Il est peut-être moins coûteux et moins risqué d'utiliser un obscurcissement que de laisser le code ouvert et de se battre devant les tribunaux après que quelqu'un ait volé les meilleures parties de notre logiciel et créé une concurrence dangereuse.

Un code non masqué murmure :

  • Allez, analyse-moi, réutilise-moi.Peut-être pourriez-vous créer un meilleur logiciel en utilisant moi.

Le code obscurci dit :

  • Va-t'en mec.C'est moins cher d'utiliser ses propres idées que d'essayer de me convaincre.

Vous allez mener une bataille perdue d’avance si vous essayez de brouiller votre code dans l’espoir que quelqu’un ne le vole pas.Vous pouvez empêcher le navigateur occasionnel d'y accéder, mais une personne dédiée sera presque certainement capable de surmonter n'importe quelle mesure que vous utilisez.

Dans le passé, j'ai vu des gens faire plusieurs choses :

  1. Collez beaucoup d'espaces en haut de la page avec un message indiquant aux gens que le code n'est pas disponible, alors qu'en réalité il vous suffit de faire défiler quelques pages pour y accéder.
  2. L'exécuter via un encodeur quelconque, c'est tellement utile car il peut simplement être exécuté via le décodeur.
  3. Une autre méthode consiste à réduire les noms de variables à un seul caractère et à supprimer les espaces (c'est aussi une question d'efficacité).

Il existe de nombreuses autres méthodes.

En fin de compte, vos efforts ne feront qu’empêcher le navigateur occasionnel de voir vos contenus.Si quelqu’un de dévoué arrive, vous ne pourrez pas faire grand-chose.Vous devrez vivre avec ça.

Mon conseil serait de créer un produit vraiment génial qui attire le plus de gens et qui bat toute concurrence en ayant le meilleur produit/service/communauté et non le code le plus obscur.

Vous êtes toujours confronté au fait que tout utilisateur accédant à votre page Web téléchargera une version fonctionnelle de votre source Javascript.Ils volonté avoir le code source.Le dissimuler peut rendre très difficile sa réutilisation par quelqu'un avec l'intention de voler votre travail acharné.Cependant, dans de nombreux cas, quelqu’un peut même réutiliser la source obscurcie !Ou, dans le pire des cas, ils peuvent le démêler à la main et éventuellement le comprendre.

Un exemple d'une situation comme la vôtre pourrait être Google Maps.La source Javascript est clairement obscurcie.Cependant, pour une logique vraiment privée/sensible, ils transmettent les données au serveur et demandent au serveur de traiter ces informations à l'aide de XMLHttpRequests (AJAX).Avec cette conception, vous disposez des parties importantes côté serveur, beaucoup plus étroitement contrôlées.

C'est probablement le mieux que vous puissiez faire.Sachez simplement que toute personne suffisamment dévouée peut probablement désembrouiller votre programme.Assurez-vous simplement que vous êtes à l’aise avec cela avant de vous lancer dans votre projet.Je pense que le plus gros problème serait de contrôler qui l'utilise sur son site.Si quelqu'un va sur un site contenant votre code et aime ce qu'il fait, peu importe qu'il ne comprenne pas ce que fait le code, ou qu'il ne puisse pas le lire, quand il peut simplement copier le code, et utilisez-le sur leur propre site.

Un obfuscateur ne vous aidera pas du tout si quelqu'un veut comprendre le code.Le code existe toujours sur la machine client et ils peuvent en récupérer une copie et l'étudier à leur guise.

Il n'y a tout simplement aucun moyen de masquer le code écrit en Javascript puisque le code source doit être transmis au navigateur pour exécution.

Si vous souhaitez masquer votre code, vous disposez des options suivantes :

1) Utilisez un environnement dans lequel le code compilé (et non la source) est téléchargé sur le client, par ex.Flash ou Silverlight.Je ne suis même pas sûr que ce soit infaillible, mais c'est certainement bien meilleur que Javascript.

2) Ayez un back-end côté serveur qui fait le travail et un client léger qui fait simplement des requêtes au serveur.

Je dirais oui, c'est suffisant si vous vous assurez également de compresser le code à l'aide d'un outil comme Packer du doyen Edward ou similaire.Si vous réfléchissez à ce qui est possible avec des outils comme .NET Reflector en termes de rétro-ingénierie du code compilé/IL dans .NET, vous réalisez que vous ne pouvez rien faire pour protéger complètement votre investissement.

D'un autre côté, rappelez-vous que les gens qui publient leur code source semblent également s'en sortir plutôt bien de toute façon - c'est leur expérience que les gens veulent plus que leur propriété intellectuelle.

l'obfuscateur de code est suffisant pour quelque chose qui nécessite une protection minimale, mais je pense que ce ne sera certainement pas suffisant pour vraiment vous protéger.si vous êtes patient, vous pouvez vraiment tout démanteler.et je suis sûr qu'il existe des programmes pour le faire pour vous.

Cela étant dit, vous ne pouvez empêcher personne de pirater vos données, car de toute façon, cela finirait par briser tout type de protection que vous créez.et c'est particulièrement facile dans un langage scripté où le code n'est pas compilé.

Si vous utilisez un autre langage, peut-être Java ou .NET, vous pouvez essayer de faire des choses comme « appeler à la maison » pour vérifier qu'un numéro de licence correspond à une URL donnée.Ce qui fonctionne si votre application est une sorte d’application en ligne qui sera connectée en ligne à tout moment.Mais en ayant accès à la source, les gens peuvent facilement contourner cette partie.

En bref, javascript est un mauvais choix pour ce que vous faites.
Une avancée par rapport à ce que vous faites consiste peut-être à utiliser un backend de service Web pour obtenir vos données.Laissez le service Web gérer le processus d’authentification/vérification.Nécessite un peu de travail pour s'assurer qu'il est à l'épreuve des balles, mais il pourrait travail

S'il s'agit d'un site Web qui, de par sa nature même, permet de visualiser son code en un clic de menu, y a-t-il vraiment une raison de cacher quoi que ce soit ?Si quelqu'un veut voler votre code, il s'efforcera probablement de rendre lisible par l'homme même le code le plus mutilé.Regardez les sites Web commerciaux, ils ne masquent pas leur code et personne ne vole le code des applications Google.Si vous êtes vraiment inquiet du vol de code, je préférerais l'écrire dans un autre langage compilé.(ce qui détruit bien sûr tout le truc de l'application Web...) Même dans ce cas, vous n'êtes pas totalement en sécurité, il existe de nombreux décompilateurs.

Donc vraiment, il n’y a aucun moyen de faire ce que vous voulez face à quelqu’un suffisamment motivé.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top