3 votes

Exécuter le code JavaScript après le chiffrement en Base64

J'ai crypté mon code JavaScript avec la méthode base64 comme indiqué ici. Mais lorsque j'exécute la fonction d'encodage avec document.ready, la fonction JavaScript ne fait pas ce qu'elle devrait.

Comment puis-je faire pour que le code crypté soit décrypté et que la fonction démarre?

Merci d'avance! :)

6voto

Guffa Points 308133

Il suffit d'utiliser eval sur la chaîne décodée.

Exemple en utilisant le code alert("test");:

eval(decode64('YWxlcnQlMjglMjJ0ZXN0JTIyJTI5JTNC'));

Démo: http://jsfiddle.net/uFxnz/

Note: Utiliser la fonction eval est associé à un code non sécurisé et inefficace, mais dans ce cas, vous avez autant de contrôle sur l'origine du code que possible, donc cela fait exactement ce que vous voulez qu'il fasse.

2voto

Qwerty Points 1165

Pour "protéger" votre code...

...vous pouvez utiliser la procédure simple suivante.

Cependant, gardez à l'esprit qu'elle ne garantit aucune sécurité. Cela ne signifie pas qu'il n'y a pas de cas d'utilisation. Chiffrer en une chaîne base64 a tout son sens pour la partageabilité ou lorsque vous voulez créer, par exemple un marque-page (code exécuté depuis la barre d'adresse javascript:eval(atob('...')).


Maintenant, disons que c'est votre code :

1. Le Code

// commentaire, Wouhou!
var myObj = {
    foo : function() { alert("Baz!")} ,
    html : "", // c'est ["'] preuve
    bar : 123 
};
myObj.foo();

2. La chaîne base64

1. var base64Fun = btoa((function(){
2. // commentaire, Wouhou!
3. var myObj = {
4.     foo : function() { alert("Baz!")} ,
5.     html : "", // c'est ["'] preuve
6.     bar : 123 
7. };
8. myObj.foo();
9. }).toString().slice(13,-2))

Remarquez que j'ai seulement ajouté les lignes 1 et 9, le reste est votre code, intact.

3. Exécutez-le

eval(atob(base64Fun));

eval(atob("Ly8gY29tbWVudGFyeQp2YXIgbXlPYmogPSB7Cglmb28gOiBmdW5jdGlvbigpIHsgYWxlcnQoIkJheiEiKX0gLAoJaHRtbCA6ICI8ZGl2IGlkPSdteURJVic+PC9kaXY+IiwKCWJhciA6IDEyMyAKfTsKbXlPYmouZm9vKCk7"));

Compatibilité

btoa() et atob() ne sont pas supportés par tous les navigateurs, mais..

  1. utilisez un polyfill et apprenez à ces fonctions au navigateur. lien
  2. trouvez une autre solution

0voto

Adam Points 7600

Vous ne pouvez pas exécuter votre code JS via un convertisseur base64 et vous attendre à ce qu'il fonctionne.

Ce que vous cherchez est un minifieur. Comme uglifyjs:

http://marijnhaverbeke.nl/uglifyjs

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