Question

    

Cette question a déjà une réponse ici:

         

Existe-t-il un moyen de masquer ou de chiffrer le code JavaScript pour empêcher les utilisateurs de visualiser, de copier et / ou de modifier des programmes propriétaires?

Était-ce utile?

La solution

Vous pouvez le masquer, mais il n’ya aucun moyen de le protéger complètement.

exemple obfuscator: https://obfuscator.io http://www.javascriptobfuscator.com/Default.aspx

Autres conseils

Non, ce n'est pas possible. S'il fonctionne sur le navigateur client, il doit être téléchargé par le navigateur client. Il est assez simple d’utiliser Fiddler pour inspecter la session HTTP et obtenir tous les fichiers js téléchargés.

Vous pouvez utiliser des astuces. L’une des plus évidentes est d’utiliser un obfuscateur javascript.

Encore une fois, l’obscurcissement empêche seulement l’espionnage occasionnel et n’empêche pas les personnes de soulever et d’utiliser votre code.

Vous pouvez essayer un script d’action compilé sous la forme d’un film flash.

Bien que tout le monde convienne que le cryptage Javascript est une mauvaise idée , il existe quelques petits cas d'utilisation. où ralentir l'attaque vaut mieux que rien. Vous pouvez commencer par YUI Compressor (comme @Ben Alpert) ou JSMin, Uglify ou bien d’autres.

Cependant, le principal cas dans lequel je veux vraiment "cacher des choses" est lorsque je publie une adresse e-mail. Notez que le problème de Chrome se pose lorsque vous cliquez sur "inspecter un élément". Il montrera votre code original: à chaque fois. C’est la raison pour laquelle l’obfuscation est généralement considérée comme une meilleure solution.

Sur cette note, je prends une attaque en deux volets, uniquement pour ralentir les robots de spam. J'obscurcir / minifier le fichier js, puis l'exécuter à nouveau via un encodeur (encore une fois, cette deuxième étape est totalement inutile en chrome).

Bien que n'étant pas exactement un encodeur Javascript pur, le meilleur encodeur html que j'ai trouvé est http://hivelogic.com/enkoder/ . Cela transformera ceci:

<script type="text/javascript">
//<![CDATA[
<!--
var c=function(e) { var m="mail" + "to:webmaster";var a="somedomain"; e.href = m+"@"+a+".com";  
};
//-->
//]]>
</script>
<a href="#" onclick="return c(this);"><img src="images/email.png" /></a>

dans ceci:

<script type="text/javascript">
//<![CDATA[
<!--
var x="function f(x){var i,o=\"\",ol=x.length,l=ol;while(x.charCodeAt(l/13)!" +
"=50){try{x+=x;l+=l;}catch(e){}}for(i=l-1;i>=0;i--){o+=x.charAt(i);}return o" +
".substr(0,ol);}f(\")87,\\\"meozp?410\\\\=220\\\\s-dvwggd130\\\\#-2o,V_PY420" +
"\\\\I\\\\\\\\_V[\\\\\\\\620\\\\o710\\\\RB\\\\\\\\610\\\\JAB620\\\\720\\\\n\\"+
"\\{530\\\\410\\\\WJJU010\\\\|>snnn|j5J(771\\\\p{}saa-.W)+T:``vk\\\"\\\\`<02" +
"0\\\\!610\\\\'Dr\\\\010\\\\630\\\\400\\\\620\\\\700\\\\\\\\\\\\N730\\\\,530" +
"\\\\2S16EF600\\\\;420\\\\9ZNONO1200\\\\/000\\\\`'7400\\\\%n\\\\!010\\\\hpr\\"+
"\\= -cn720\\\\a(ce230\\\\500\\\\f730\\\\i,`200\\\\630\\\\[YIR720\\\\]720\\\\"+
"r\\\\720\\\\h][P]@JHADY310\\\\t230\\\\G500\\\\VBT230\\\\200\\\\Clxhh{tzra/{" +
"g0M0$./Pgche%Z8i#p`v^600\\\\\\\\\\\\R730\\\\Q620\\\\030\\\\730\\\\100\\\\72" +
"0\\\\530\\\\700\\\\720\\\\M410\\\\N730\\\\r\\\\530\\\\400\\\\4420\\\\8OM771" +
"\\\\`4400\\\\$010\\\\t\\\\120\\\\230\\\\r\\\\610\\\\310\\\\530\\\\e~o120\\\\"+
"RfJjn\\\\020\\\\lZ\\\\\\\\CZEWCV771\\\\v5lnqf2R1ox771\\\\p\\\"\\\\tr\\\\220" +
"\\\\310\\\\420\\\\600\\\\OSG300\\\\700\\\\410\\\\320\\\\410\\\\120\\\\620\\" +
"\\q)5<: 0>+\\\"(f};o nruter};))++y(^)i(tAedoCrahc.x(edoCrahCmorf.gnirtS=+o;" +
"721=%y;++y)87<i(fi{)++i;l<i;0=i(rof;htgnel.x=l,\\\"\\\"=o,i rav{)y,x(f noit" +
"cnuf\")"                                                                     ;
while(x=eval(x));
//-->
//]]>
</script>

Peut-être que cela suffit pour ralentir quelques robots de spam. Je n'ai reçu aucun spam en utilisant cette option (! Encore).

L'un des meilleurs compresseurs (pas spécifiquement un obfuscateur) est le YUI Compressor .

JavaScript est un langage de script. Il reste donc sous une forme lisible par l'homme jusqu'à ce qu'il soit temps qu'il soit interprété et exécuté par le moteur d'exécution JavaScript.

La seule façon de le cacher partiellement, du moins aux esprits moins techniques, est d’obscurcir.

L’obfuscation rend plus difficile la lecture par les humains, mais pas impossible pour ceux qui sont techniquement avertis.

Si vous souhaitez masquer quelque chose de particulier (comme un algorithme propriétaire), placez-le sur le serveur ou placez-le dans une animation Flash et appelez-le avec JavaScript. L'écriture d'ActionScript est très similaire à l'écriture de JavaScript, et vous pouvez communiquer entre JavaScript et ActionScript. Vous pouvez faire de même avec Silverlight, mais Silverlight n’a pas la même pénétration que Flash.

Cependant, rappelez-vous que tous les téléphones mobiles peuvent exécuter votre code JavaScript, mais pas Silverlight ni Flash, de sorte que vous blessez vos utilisateurs mobiles si vous utilisez Flash ou Silverlight.

Le seul moyen sûr de protéger votre code est de ne pas le révéler. Avec le déploiement du client, il n’empêche que le client a accès au code.

La réponse courte est donc: vous ne pouvez pas le faire

La réponse la plus longue concerne Flash ou Silverlight. Bien que je pense que silverlight se fera un plaisir de révéler ses secrets grâce à un réflecteur installé sur le client.

Je ne sais pas s'il existe quelque chose de similaire avec la plate-forme Flash.

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