Comment puis-je cacher le code javascript dans une page web? [dupliquer]

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

  • comment masquer le code javascript [dupliquer] 4 réponses

est-il possible de cacher le code Javascript du code html d'une page Web, lorsque le code source est visualisé par l'intermédiaire de la fonction affichage des sources du navigateur?

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

70
demandé sur durron597 2011-07-29 10:11:51

9 réponses

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

comme d'autres l'ont dit, il n'y a aucun moyen de protéger javascript destiné à fonctionner dans un navigateur à partir d'un téléspectateur déterminé. Si le navigateur ne peut l'exécuter, puis tout déterminé personne peut afficher/exécuter aussi.

mais, si vous mettez votre javascript dans un fichier javascript externe qui est inclus avec:

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

, alors 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 signifie pas 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 cela le fera.

Si vous vouliez vraiment faire plus de travail pour afficher la source, vous devez faire tous les

  1. mettez-le dans un externe .fichier js.
  2. Obfuser le fichier de sorte que la plupart des noms de variables natives sont remplacés par des versions courtes, de sorte que tous les espaces vides sont supprimés, de sorte qu'il ne peut pas être lu sans autre traitement, etc...
  3. comprend dynamiquement le .fichier js par ajout programmatique de balises de script (comme Google Analytics le fait). Cela rendra encore plus difficile l'accès au code source de la commande View Source car il n'y aura pas de lien facile pour y cliquer.
  4. mettez autant de logique intéressante que vous voulez protéger sur le serveur que vous récupérez via les appels ajax plutôt que de faire du traitement local.

avec tout ce qui est dit, je pense que vous devriez vous concentrer sur la performance, la fiabilité et rendre votre application grande. Si vous devez absolument protéger un algorithme, mettez - le sur le serveur, mais à part ça, rivalisez pour être le c'est ce que tu fais de mieux, pas en ayant des secrets. C'est en fin de compte ainsi que le succès fonctionne sur le web de toute façon.

98
répondu jfriend00 2011-07-29 07:13:25

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.

34
répondu Quentin 2011-07-29 06:13:32

utiliser HTML Encrypter la partie de la 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'));
//-->

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

et aussi ce Crypteur ne fonctionne pas toujours dans un certain code qui va faire de votre site web foiré... Sélectionnez la meilleure partie que vous voulez cacher, comme par exemple dans <form> </form>

cela peut être inversé par advance user mais tous les noob comme moi ne le savent pas.

Espérons que cela permettra de

13
répondu HINAYUPAKS 2012-12-15 11:45:45

ma solution s'inspire du Dernier commentaire. C'est le code de l'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();});

notez 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.

Concernant invisible_debut.js, j'ai occulté, ce qui signifie qu'il est très compliqué de trouver l'url de l'invisible.js. Pas parfait, mais assez dur pour un hacker normal.

9
répondu Armand Arapian 2013-11-19 22:33:18

Je ne suis pas sûr qu'il y ait un moyen de cacher cette information. Peu importe ce que vous faites pour masquer ou cacher ce que vous faites dans JavaScript, cela revient toujours au fait que votre navigateur doit le charger pour l'utiliser. Les navigateurs modernes disposent d'outils de débogage/analyse web qui rendent l'extraction et la visualisation des scripts triviaux (il suffit de cliquer sur F12 dans Chrome, par exemple).

si vous craignez de révéler une sorte de secret commercial ou algorithme, alors votre seul recours est d'encapsuler cette logique dans un appel de service web et faire en sorte que votre page invoque cette fonctionnalité via AJAX.

7
répondu Mark Carpenter 2011-07-29 06:17:52

'n'est pas possible!

Oh que si ....

//------------------------------
function unloadJS(scriptName) {
  var head = document.getElementsByTagName('head').item(0);
  var js = document.getElementById(scriptName);
  js.parentNode.removeChild(js);
}


//----------------------
function unloadAllJS() {
  var jsArray = new Array();
  jsArray = document.getElementsByTagName('script');
  for (i = 0; i < jsArray.length; i++){
    if (jsArray[i].id){
      unloadJS(jsArray[i].id)
    }else{
      jsArray[i].parentNode.removeChild(jsArray[i]);
    }
  }      
}
6
répondu Addinall 2013-01-24 06:55:59

vous pouvez utiliser document.write .

sans jQuery

<!DOCTYPE html>
<html>
<head><meta charset=utf-8></head>
<body onload="document.write('<!doctype html><html><head><meta charset=utf-8></head><body><p>You cannot find this in the page source. (Your page needs to be in this document.write argument.)</p></body></html>');">
</body></html>

ou avec jQuery

$(function () {
  document.write("<!doctype html><html><head><meta charset=utf-8></head><body><p>You cannot find this in the page source. (Your page needs to be in this document.write argument.)</p></body></html>")
});
5
répondu Blue Sheep 2016-04-17 22:41:24

je pense que j'ai trouvé une solution pour cacher certains codes JavaScript dans la vue source du navigateur. Mais vous devez utiliser jQuery pour le faire.

par exemple:

dans votre index.php

<head>
<script language = 'javascript' src = 'jquery.js'></script>
<script language = 'javascript' src = 'js.js'></script>
</head>

<body>
<a href = "javascript:void(null)" onclick = "loaddiv()">Click me.</a>

<div id = "content">
</div>

</body>

vous chargez un fichier dans le corps html/php appelé par une fonction jquery dans le js.fichier js.

js.js

function loaddiv()
{$('#content').load('content.php');}

voilà le truc.

dans votre contenu.php fichier mettez une autre étiquette de tête puis appelez un autre fichier js à partir de là.

du contenu.php

<head>
<script language = 'javascript' src = 'js2.js'></script>
</head>

<a href = "javascript:void(null)" onclick = "loaddiv2()">Click me too.</a>

<div id = "content2">
</div>

dans le js2.fichier js créer toute fonction que vous voulez.

exemple:

js2.js

function loaddiv2()
{$('#content2').load('content2.php');}

contenu2.php

<?php
echo "Test 2";
?>

s'il vous plaît suivre le lien puis copier le coller dans le nom de fichier de jquery.js

http://dl.dropbox.com/u/36557803/jquery.js

j'espère que cela aidera.

4
répondu Jepp 2012-11-09 02:50:43

N'est pas possbile!

la seule façon est d'obscurcir javascript ou de réduire votre javascript ce qui rend difficile pour l'utilisateur final de rétro-ingénierie. cependant, son impossible de les désosser.

1
répondu gabriele brunori 2012-09-27 14:48:04