À quoi ça sert
L’obfuscateur JavaScript réécrit un script pour qu’il s’exécute exactement de la même façon tout en étant beaucoup plus difficile à lire et à copier. Les noms de variables et de fonctions deviennent des identifiants sans signification comme _0x3f2a, les chaînes littérales sont déplacées dans une table de correspondance encodée et, aux niveaux supérieurs, le flux de contrôle est mélangé et du code mort est ajouté.
C’est utile pour les jeux dans le navigateur, les démos, les widgets et les vérifications de licence que vous livrez en JavaScript brut et que vous ne voulez pas voir copiés mot pour mot.
Mode d’emploi
- Collez votre JavaScript ou ouvrez un fichier
.js. - Choisissez un Niveau :
- Faible renomme les noms locaux et déplace les chaînes dans un tableau de correspondance. La sortie reste rapide et assez compacte.
- Moyen ajoute l’encodage des chaînes, l’aplatissement du flux de contrôle et un peu de code mort.
- Élevé applique tout à pleine puissance. Le résultat peut être plusieurs fois plus volumineux et sensiblement plus lent.
- N’activez Renommer les noms globaux que si rien en dehors du script ne fait référence à ses fonctions ou variables de premier niveau.
- Désactivez Sortie sur une seule ligne si vous voulez un résultat réparti sur plusieurs lignes.
- Copiez ou téléchargez le code obfusqué et testez-le avant de le déployer.
Exemple
L’exemple définit une fonction greet et un compteur de visites. Après obfuscation au niveau faible, le code tient sur une seule ligne de noms hexadécimaux, et pourtant son exécution affiche toujours Hello, Ada! You have visited 1 time(s).
Obfuscation ou minification
La minification, comme celle du minificateur JavaScript et CSS, supprime les espaces et raccourcit les noms pour obtenir des fichiers plus légers et plus rapides à télécharger. L’obfuscation va dans le sens inverse côté taille : elle ajoute volontairement des indirections pour rendre le code plus difficile à comprendre. Beaucoup de projets minifient tout et n’obfusquent que les quelques fichiers dont la logique mérite d’être protégée.
Limites
L’obfuscation ne peut pas protéger des secrets. Tout ce que le navigateur peut exécuter, un utilisateur finira par pouvoir l’inspecter : gardez sur votre serveur les clés d’API et les règles métier qui doivent rester privées. Les réglages les plus forts ralentissent aussi le code : évitez-les dans les boucles critiques et les pages sensibles aux performances.
FAQ
› L'obfuscation change-t-elle le comportement de mon code ?
Non. Le script obfusqué se comporte comme l'original ; seule sa forme change. Lancez toujours vos tests sur la version obfusquée, car le code qui inspecte sa propre source ou les noms de ses fonctions peut se comporter différemment.
› Le code obfusqué peut-il être inversé ?
Pas complètement, mais une personne déterminée et patiente peut tout de même comprendre ce qu'il fait. Voyez l'obfuscation comme un ralentisseur contre la copie occasionnelle, jamais comme une cachette pour des secrets comme des clés d'API.
› Quand activer Renommer les noms globaux ?
Seulement quand le script est autonome. Renommer les noms globaux casse les attributs HTML, les autres scripts ou les tests qui appellent vos fonctions de premier niveau par leur nom.
› Mon code est-il envoyé sur un serveur ?
Non. L'obfuscation s'exécute dans votre navigateur avec la bibliothèque open source javascript-obfuscator.