743 votes

Comment je peux obfuscate(protect) JavaScript ?

Je veux faire une application JavaScript qui n’est pas open source et ai donc deux questions :

  1. Quelle est la meilleure façon d’obfusquer le code ?
  2. Quelle est la meilleure façon de brouiller les chaînes elles-mêmes au sein de l’application (en supposant que la réponse à #1 ne gère pas cela) ?

427voto

keparo Points 13747

L'Obfuscation:

Essayez de YUI Compressor. C'est un outil très populaire, construit, amélioré et maintenu par le Yahoo UI.

Vous pouvez aussi utiliser:

Privé De La Chaîne De Données:

En gardant les valeurs de chaîne privée est une autre préoccupation, et de l'obscurcissement ne sera pas vraiment de beaucoup d'avantages. Bien sûr, par l'emballage de votre source en un tronqués, minifiés désordre, vous avez une version "light" de la sécurité par l'obscurité. La plupart du temps, c'est votre utilisateur qui est de l'affichage de la source, et les valeurs de chaîne sur le client sont destinées à leur usage, de sorte que la forme de la chaîne de valeur n'est pas souvent nécessaire.

Si vous avez vraiment eu une valeur que vous n'avez jamais voulu à l'utilisateur de voir, vous avez quelques options. Tout d'abord, vous pourriez faire une sorte de chiffrement, qui est déchiffré au chargement de la page. Ce serait sans doute l'un des plus sûrs d'options, mais aussi beaucoup de travail qui peut être inutile. Vous pourriez probablement base64 encode une chaîne de caractères valeurs, et qu'il serait plus facile.. mais quelqu'un qui voulait vraiment ces valeurs de chaîne pourrait facilement décoder. Le chiffrement est la seule façon de vraiment empêcher quiconque d'accéder à vos données, et la plupart des gens trouvent que, pour être plus en sécurité que dont ils ont besoin.

Sidenote:

L'Obfuscation en Javascript a été la cause de certains bugs. Le obfuscators sont un peu mieux à ce sujet, mais de nombreuses tenues décider qu'ils voient assez de bénéficier de minifying et gzipping, et, avec les économies de dissimulation n'est pas toujours la peine. Si vous essayez de protéger votre source, peut-être vous décidez qu'il est utile de votre temps, juste pour rendre votre code plus difficile à lire. JSMin est une bonne alternative.

143voto

Jason Hall Points 15935

Je suis surpris que personne n’a mentionné de Google Fermeture du compilateur. Il n’est pas seulement rapetisser/compress, il analyse pour trouver et supprimer le code inutilisé et réécritures de réduction maximale. Il peut aussi faire vérification de type et vous avertissent sur les erreurs de syntaxe.

JQuery a récemment passé de YUI Compresser au compilateur de fermeture et a vu une «amélioration solide»

129voto

Schwern Points 33677

L'Obfuscation ne peut jamais vraiment travailler. Pour quelqu'un qui veut vraiment obtenir votre code, c'est juste un dos d'âne. Pire encore, il permet à vos utilisateurs de la correction de bugs (et de les expédier vers vous) et rend plus difficile pour vous de diagnostiquer les problèmes dans le domaine. C'est un gaspillage de votre temps et de l'argent.

Écrire une licence et d'obtenir un avocat pour aller après les contrevenants.

La seule façon que vous pouvez vraiment protéger votre code est de ne pas l'expédier. Déplacer le code côté serveur et votre public code Javascript de faire des appels Ajax.

Voir ma réponse sur obfuscators ici.

50voto

Claudiu Points 58398

Vous pouvez dissimuler la source javascript tout ce que vous voulez, mais il sera toujours inverse engineerable juste en vertu d'exiger la totalité du code source pour s'exécuter sur la machine du client... la meilleure option à laquelle je pense est d'avoir tous vos traitement effectué avec du code côté serveur, et le client le code javascript ne s'agit que d'envoyer des demandes de traitement pour le serveur lui-même. Sinon, quelqu'un sera toujours en mesure de garder une trace de toutes les opérations que fait le code.

Quelqu'un a mentionné base64 pour garder les chaînes de sécurité. C'est une idée terrible. Base64 est immédiatement reconnaissable par les types de personnes qui voudraient désosser votre code. La première chose qu'ils vont faire est de unencode et voir ce qu'il est.

45voto

Tom Points 5872

Il y a un certain nombre de JavaScript dissimulation des outils qui sont librement disponibles; cependant, je pense qu'il est important de noter qu'il est difficile de dissimuler le JavaScript pour le point où il ne peut pas être de la rétro-ingénierie.

À cette fin, il ya plusieurs options que j'ai utilisé à un certain degré d'heures supplémentaires:

  • YUI Compressor. Yahoo! JavaScript compresseur fait un bon travail de condensation le code qui permettra d'améliorer son temps de chargement. Il y a un petit niveau de dissimulation qui fonctionne relativement bien. Essentiellement, le Compresseur va changer les noms de fonction, supprimer l'espace, et de modifier les variables locales. C'est ce que j'utilise le plus souvent. C'est un open-source outil basé sur Java.

  • JSMin est un outil écrit par Douglas Crockford, qui cherche à rapetisser l'option JavaScript de votre source. Dans Crockford propres mots, "JSMin ne pas occulter, mais il ne uglify." C'est l'objectif principal est de rapetisser la taille de votre source pour un chargement plus rapide dans les navigateurs.

  • Gratuit JavaScript Obfuscator. C'est un outil basé sur le web qui tente de dissimuler votre code en les codant. Je pense que le compromis de sa forme de codage (ou de la dissimulation de l') pourrait se faire au détriment de la taille du fichier; cependant, c'est une question de préférence personnelle.

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