112 votes

Comment masquer le code javascript dans une page web ?

Est-il possible de masquer le code Javascript du code html d'une page web, lorsque le code source est affiché par la fonction View Source du navigateur ?

Je sais qu'il est possible d'obscurcir le code, mais je préférerais qu'il soit caché de la caractéristique de la source de la vue.

1 votes

Il est côté client et sera donc présent sur tous les clients (navigateurs).

8 votes

Pourquoi voudriez-vous cacher Javascript ? Ce n'est pas comme si vous y mettiez des données sensibles que vous ne voulez pas que l'utilisateur trouve... Pas vrai ? !

1 votes

Comment un navigateur peut-il savoir quel Javascript exécuter ?

153voto

jfriend00 Points 152127

Je ne suis pas sûr que quelqu'un d'autre ait répondu directement à votre question, à savoir que le code est affiché à partir de la commande View Source du navigateur.

Comme d'autres l'ont dit, il n'y a aucun moyen de protéger le javascript destiné à être exécuté dans un navigateur contre une visionneuse déterminée. Si le navigateur peut l'exécuter, toute personne déterminée peut également le visualiser/exécuter.

Mais, si vous placez votre javascript dans un fichier javascript externe qui est inclus avec :

<script type="text/javascript" src="http://mydomain.com/xxxx.js"></script>

le code javascript ne sera pas immédiatement visible avec la commande View Source - seule la balise script elle-même sera visible de cette façon. Cela ne veut pas dire que quelqu'un ne peut pas simplement charger ce fichier javascript externe pour le voir, mais vous avez demandé comment le garder hors de la commande View Source du navigateur et ceci le fera.

Si vous vouliez vraiment rendre la consultation de la source plus difficile, vous feriez tout ce qui suit :

  1. Mettez-le dans un fichier .js externe.
  2. Obfusquez le fichier de sorte que la plupart des noms de variables natives soient remplacés par des versions courtes, que tous les espaces blancs inutiles soient supprimés, qu'il ne puisse pas être lu sans traitement supplémentaire, etc...
  3. Incluez dynamiquement le fichier .js en ajoutant par programmation des balises script (comme le fait Google Analytics). Cela rendra encore plus difficile l'accès au code source à partir de la commande View Source, car il n'y aura pas de lien facile à cliquer.
  4. Mettez autant de logique intéressante que vous voulez protéger sur le serveur que vous récupérez via des appels ajax plutôt que d'effectuer un traitement local.

Cela dit, je pense que vous devriez vous concentrer sur les performances, la fiabilité et la qualité de votre application. Si vous devez absolument protéger un algorithme, mettez-le sur le serveur, mais à part cela, soyez compétitif en étant le meilleur dans votre domaine, pas en ayant des secrets. C'est finalement comme ça que le succès fonctionne sur le web de toute façon.

3 votes

Belle façon de répondre directement à la question. Utiliser JavaScript pour générer le site <script> le maintiendrait mieux hors de la vue source (toujours visible sous le DOM en direct) - c'est-à-dire qu'il ne peut pas être simplement "cliqué avec le bouton droit de la souris" dans la vue source. Il pourrait être possible pour ladite <script> sera supprimé une fois que le JavaScript sera exécuté, ce qui rendra un peu plus difficile (mais pas impossible) l'obtention du code original... bien sûr, le trafic Internet apparaîtra très facilement dans Firebug ou un programme similaire ;-)

3 votes

@Quentin - votre URL de source de vue est stupide - ce n'est pas ce qui est demandé ou proposé ici. Toute personne peut visualiser le code. Je l'ai dit autant que n'importe qui d'autre. La question est seulement de savoir à quel point c'est facile et, selon la question spécifique posée, à quel point c'est visible quand quelqu'un fait View Source ? Ma suggestion est une étape de plus que View Source - c'est tout, mais c'est une étape supplémentaire valable.

0 votes

Fetch("script TO HIDE URL or DATAURL").then(function(t) { return t.text()||false ; }).then(c=>self[atob("ZXZhbA")](c))

37voto

Quentin Points 325526

Non, ce n'est pas possible.

Si vous ne le donnez pas au navigateur, alors le navigateur ne l'a pas.

Si vous le faites, alors il (ou une référence facile à suivre) fait partie de la source.

5 votes

Je ne suis pas sûr que cette réponse ait vraiment répondu à la question posée (même si elle a obtenu 10 upvotes en 15 minutes). Ils ont demandé comment garder le code en dehors de la commande View Source du navigateur. C'est possible. Voir ma réponse ci-dessous. Ils n'ont pas demandé comment empêcher le code d'être vu par un hacker déterminé.

8 votes

Il n'est pas nécessaire d'être très déterminé pour cliquez sur le lien dans la source de visualisation d'un document HTML pour accéder à la source de visualisation du script.

0 votes

A mon avis, la question n'a pas été interprétée correctement. La création d'un fichier JS est courante, ce que l'utilisateur veut ici (je pense) est de savoir comment cacher la valeur d'une variable JS lorsque quelqu'un choisit l'option "view page source". +1 de mon côté.

18voto

Armand Arapian Points 61

Ma solution s'inspire du dernier commentaire. Voici le code de invisible.html

<script src="http://code.jquery.com/jquery-1.8.2.js"></script>
<script type="text/javascript" src="invisible_debut.js" ></script>
<body>
</body>

Le code clair de invisible_debut.js est :

$(document).ready(function () {
var ga = document.createElement("script"); //ga is to remember Google Analytics ;-)
ga.type = 'text/javascript';
ga.src = 'invisible.js';
ga.id = 'invisible';
document.body.appendChild(ga);
$('#invisible').remove();});

Remarquez qu'à la fin je supprime le script créé. invisible.js est :

$(document).ready(function(){
    alert('try to find in the source the js script which did this alert!');
    document.write('It disappeared, my dear!');});

invisible.js n'apparaît pas dans la console, car il a été supprimé et jamais dans le code source car créé par javascript.

En ce qui concerne invisible_debut.js, je l'ai obfusqué, ce qui signifie qu'il est très compliqué de trouver l'url de invisible.js. Pas parfait, mais assez difficile pour un hacker normal.

3 votes

La chose étrange est que j'ai suivi exactement les étapes et je suis capable de trouver invisible.js dans les sources. Chrome Version 34.0.1847.131 m

2 votes

@Boyang, il n'apparaît pas dans la console, mais si nous connaissons le chemin, nous pouvons toujours le trouver.

2 votes

Non seulement cela, mais il apparaîtra toujours dans l'onglet Réseau de la plupart des DevTools. Encore une fois, tout pirate qui se respecte dispose de DevTools.

14voto

HINAYUPAKS Points 107

Utiliser Html Encrypter La partie de l'en-tête qui a

<link rel="stylesheet" href="styles/css.css" type="text/css" media="screen" />
<script type="text/javascript" src="script/js.js" language="javascript"></script>

copy and paste it to HTML Encrypter and the Result will goes like this
and paste it the location where you cut the above sample

<Script Language='Javascript'>
<!-- HTML Encryption provided by iWEBTOOL.com -->
<!--
document.write(unescape('%3C%6C%69%6E%6B%20%72%65%6C%3D%22%73%74%79%6C%65%73%68%65%65%74%22%20%68%72%65%66%3D%22%73%74%79%6C%65%73%2F%63%73%73%2E%63%73%73%22%20%74%79%70%65%3D%22%74%65%78%74%2F%63%73%73%22%20%6D%65%64%69%61%3D%22%73%63%72%65%65%6E%22%20%2F%3E%0A%3C%73%63%72%69%70%74%20%74%79%70%65%3D%22%74%65%78%74%2F%6A%61%76%61%73%63%72%69%70%74%22%20%73%72%63%3D%22%73%63%72%69%70%74%2F%6A%73%2E%6A%73%22%20%6C%61%6E%67%75%61%67%65%3D%22%6A%61%76%61%73%63%72%69%70%74%22%3E%3C%2F%73%63%72%69%70%74%3E%0A'));
//-->

ENCRYPTER HTML Note : si vous avez un java script dans votre page, essayez d'exporter vers un fichier .js et faites-le comme l'exemple ci-dessus.

Et aussi cet Encrypter ne fonctionne pas toujours dans certains codes qui rendront votre site web désordonné... Sélectionnez la meilleure partie que vous voulez cacher comme par exemple dans <form> </form>

Ceci peut être inversé par un utilisateur expérimenté mais tous les noob comme moi ne le savent pas.

J'espère que cela vous aidera

3 votes

Votre lien fourni n'est pas ouvert et donne une erreur de code 404.

0 votes

C'est de la même manière que les pirates informatiques injectent du code malveillant dans un site web. Certains des outils d'exploration Web de sécurité les plus avancés recherchent ce type de code et le suppriment de la source de la page.

9voto

Pwninstein Points 7293

Je ne suis pas sûr qu'il y ait un moyen de cacher cette information. Peu importe ce que vous faites pour obscurcir ou dissimuler ce que vous faites en JavaScript, tout se résume toujours au fait que votre navigateur doit le charger pour pouvoir l'utiliser. Les navigateurs modernes sont dotés d'outils de débogage et d'analyse Web qui rendent l'extraction et l'affichage des scripts triviaux (il suffit d'appuyer sur la touche F12 dans Chrome, par exemple).

Si vous craignez d'exposer un secret commercial ou un algorithme, votre seul recours est d'encapsuler cette logique dans un appel de service Web et de faire en sorte que votre page invoque cette fonctionnalité via AJAX.

0 votes

Disons que vous craignez de dévoiler un secret. Disons que vous le mettez dans un fichier PHP et l'appelez via Ajax. N'importe qui peut alors appeler ce fichier PHP et trouver le secret. Il existe probablement un moyen de protéger les secrets en utilisant PHP, et je me suis efforcé de le trouver. Générer un nombre aléatoire et exiger que toutes les ressources le fournissent comme argument au fichier PHP. Je pense que cela fonctionne, mais pas si un utilisateur malveillant utilise des outils de développement.

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