Protéger du code javascript via un script php

Protéger du code javascript via un script php - HTML/CSS - Programmation

Marsh Posté le 04-09-2005 à 11:38:27    

Voici le code de la page request :

Code :
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
  2. "http://www.w3.org/TR/html4/loose.dtd">
  3. <html>
  4. <head>
  5. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  6. <title>Document sans nom</title>
  7. <script>
  8. /* Ne vous réjouissez pas trop vite, ceci 'nest pas la source javascript :) */
  9. /* Ce code va juste la chercher */
  10. function data()
  11. {
  12.    var xhr_object = null;
  13.    if(window.XMLHttpRequest) // Firefox
  14.           xhr_object = new XMLHttpRequest();
  15.        else if(window.ActiveXObject) // Internet Explorer
  16.    xhr_object = new ActiveXObject("Microsoft.XMLHTTP" );
  17.    else { // XMLHttpRequest non supporté par le navigateur
  18.    alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..." );
  19.    return;
  20.    }
  21.    xhr_object.open("POST", "code_javascript.php", true);
  22.    xhr_object.onreadystatechange = function() {
  23.    if(xhr_object.readyState == 4)
  24.    eval(xhr_object.responseText);
  25.    }
  26.    xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded" );
  27.    var data = "test=1";
  28.    xhr_object.send(data);
  29. }
  30. data()
  31. </script>
  32. </head>
  33. <body>
  34. </body>
  35. </html>


 
 
Et le code du script php :

Code :
  1. <?
  2. if($HTTP_REFERER=="http://www.realm-fantasy.net/request.html" )
  3. {
  4. echo "/* VOUS VOICI SUR LA SOURCE BRAVO !!!*/\n";
  5. echo "/* Le nombre secret est 12 147 889*/\n";
  6. echo "alert('Trouvez le nombre secret dans la source !');";
  7. }
  8. else
  9. {
  10. echo '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
  11. <HTML><HEAD>
  12. <TITLE>403 Forbidden</TITLE>
  13. </HEAD><BODY>
  14. <H1>Forbidden</H1>
  15. You don\'t have permission to access code_javascript.php
  16. on this server.<P>
  17. <P>Additionally, a 500 Internal Server Error
  18. error was encountered while trying to use an ErrorDocument to handle the request.
  19. <HR>
  20. <ADDRESS>Apache/1.3.33 Server at www.realm-fantasy.net Port 80</ADDRESS>
  21. </BODY></HTML>';
  22. }
  23. ?>

Message cité 1 fois
Message édité par zakinster le 19-01-2023 à 18:06:09
Reply

Marsh Posté le 04-09-2005 à 11:38:27   

Reply

Marsh Posté le 04-09-2005 à 11:49:30    

Inutile :o


---------------
http://www.alsacreations.com , http://www.openweb.eu.org. Mon CV : http://cv.roane-irkana.net/. Exemple à ne surtout pas suivre : www.worldinternet.be
Reply

Marsh Posté le 04-09-2005 à 11:53:14    

Je ne dis pas que cela peut protéger protéger ta source ou pas, mais si le visiteur n'a pas de javascript, il ne peut pas consulter le site.  
 
C'est stupide. En plus les "codes sensibles" ca se met dans le php, pas dans le javascript.


---------------
http://www.alsacreations.com , http://www.openweb.eu.org. Mon CV : http://cv.roane-irkana.net/. Exemple à ne surtout pas suivre : www.worldinternet.be
Reply

Marsh Posté le 04-09-2005 à 11:53:18    

ca ne fonctionne que sous ie -> poubelle
 
vouloir caché quelque chose que l'on mets a la disposition de tous est stupide -> poubelle


---------------
Nos estans firs di nosse pitite patreye...
Reply

Marsh Posté le 04-09-2005 à 11:59:01    

le javascript (et le web) n'est pas prévu pour faire des jeux...


---------------
Nos estans firs di nosse pitite patreye...
Reply

Marsh Posté le 04-09-2005 à 12:01:48    

et puis ya mieux...
http://dean.edwards.name/packer/


---------------
Nos estans firs di nosse pitite patreye...
Reply

Marsh Posté le 04-09-2005 à 12:33:25    

zakinster a écrit :

tu connait beaiucoup de navigateur qui n'interprete pas le javascript O_o
ET si el visiteur 'la désactivé 'est son problème, surtout que ce script n'est déstiné qu'a un contenu 100% javascript (jeu pour moi pare xemple)
Tu ne eput aps faire en php ceq ue tu fait en javascript, ce sont deux langage complémentaire...


 
 
Lynx, Firefox si tu le souhaites, et beaucoup d'autres. 11% des internautes n'ont pas javascript activé (totalement ou partiellement).
 
Alors faire des jeux 100% js ... Autant les faire en flash :)


---------------
http://www.alsacreations.com , http://www.openweb.eu.org. Mon CV : http://cv.roane-irkana.net/. Exemple à ne surtout pas suivre : www.worldinternet.be
Reply

Marsh Posté le 04-09-2005 à 12:42:30    

http://evpc.biz/personal/soapbox/m [...] ing_source
 
mais c'est la meme chose pour le js...


---------------
Nos estans firs di nosse pitite patreye...
Reply

Marsh Posté le 04-09-2005 à 12:44:33    

Firefox a javascript, mais tu sais certains utilisateurs le désactive pour par exemple ne pas avoir leurs onglets resizés à cause d'un script à la con.
 
D'autres, comme les navigateurs textes, n'ont pas tous js. Et certains vieux navigateurs auront une version différente de la tienne, ce qui causera de nombreux problèmes.
 
Bref un site doit être consultable sans javascript, sans en intranet ou la on connait les configurations qui vont venir voir le script.
 
Le flash c'est pire encore que le js. C't'un truc de graphiste  [:jofusion]


---------------
http://www.alsacreations.com , http://www.openweb.eu.org. Mon CV : http://cv.roane-irkana.net/. Exemple à ne surtout pas suivre : www.worldinternet.be
Reply

Marsh Posté le 04-09-2005 à 12:48:17    

De toute façon, dans ce cas précis, si l'utilisateur est suffisament avancé pour avoir une bonne connaissance du javascript il saura où trouver des outils de trace réseau et pourra donc sans problème récupérer le script envoyé à la vollée par xmlHttpRequest.
 
"Protection" totalement inutile donc, puisque tout ce qu'elle fait c'est augmenter le temps de chargement de la page.


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 04-09-2005 à 12:48:17   

Reply

Marsh Posté le 04-09-2005 à 13:09:16    

Je suis sous linux, j'ai pas IE. Je fais comment ? Je paye je sais pas combien d'euros pour acheter un windows qui de toute facon me servira moins que le linux ?


---------------
http://www.alsacreations.com , http://www.openweb.eu.org. Mon CV : http://cv.roane-irkana.net/. Exemple à ne surtout pas suivre : www.worldinternet.be
Reply

Marsh Posté le 05-09-2005 à 10:14:24    

zakinster : Il y a un probleme avec ton code.
Bien que XMLHttpRequest fonctionne sous Firefox, Firefox n'envoit pas de Referer lorsqu'il send quelque chose.
Donc ton code ne fonctionne pas sous Fx.
 
Ensuite voila ton code source :

Code :
  1. /* VOUS VOICI SUR LA SOURCE BRAVO !!!*/
  2. /* Le nombre secret est 0*/
  3. alert('Trouvez le nombre secret dans la source !');


 


Je doute serieusement de ce genre de mecanismes.
En effet pour que le script "fonctionne" il doit se decoder. Des le moment qu'il est decode, alors il peut etre recupere.
Plusieurs methodes : Fx : CTRL-A -> click droit -> view selection source. Cela affiche le code source "interne" a Fx, donc en theorie le scritp y apparaitera en clair.
Autre methode, utiliser le DOM-Inspector.  
Bon j'ai pas teste ces methodes, mais elles devraient foncitonner.
Sous IE il existe un plugin qui permet egalemetn de voir la source interne.
 
Il existe encore une autre methode qui fonctionne si le script obfusque est "externe" (comme dans la page).
Il suffit d'utiliser Fx, un "shell js" et de copier le code obfusque.
Le shell va "executer" le code d'obfuscation qui doit metre le code en clair, puis l'afficher en clair. Apres cette etape voila le code du "Javascript Obfuscator" ):

Code :
  1. function () {
  2.   if (!document.getElementById || "".replace(/^/, String)) {
  3.     return;
  4.   }
  5.   input = document.getElementById("input" );
  6.   output = document.getElementById("output" );
  7.   var message = document.getElementById("message" );
  8.   var encoding = document.getElementById("ascii-encoding" );
  9.   var fastDecode = document.getElementById("fast-decode" );
  10.   var specialChars = document.getElementById("special-chars" );
  11.  
  12.   function packScript() {
  13.     try {
  14.       if (input.value) {
  15.          output.value = pack(input.value, encoding.value, fastDecode.checked, specialChars.checked);
  16.          calculateRatio();
  17.          disableDecode(!output.value || encoding.value == 0);
  18.       }
  19.     } catch (e) {
  20.       reportError("error packing script", e.message);
  21.     }
  22.   }
  23.   function decodeScript() {
  24.     try {
  25.       if (output.value) {
  26.         eval("output.value=String" + output.value.slice(4));
  27.         calculateRatio();
  28.       }
  29.     } catch (e) {
  30.       reportError("error decoding script", e.message);
  31.     } finally {
  32.       decodeScript.button.blur();
  33.       disableDecode(true);
  34.     }
  35.   }
  36.   function loadScript() {
  37.     var uploadScript = document.getElementById("uploadScript" );
  38.     uploadScript.style.display = "inline";
  39.     uploadScript.disabled = false;
  40.     this.style.display = "none";
  41.   }
  42.   function uploadScript() {
  43.     packer.encoding = "multipart/form-data";
  44.     packer.command.value = "load";
  45.     packer.submit();
  46.   }
  47.   function saveScript() {
  48.     packer.command.value = "save";
  49.   }
  50.   function clearAll(loading) {
  51.     if (loading != true) {
  52.       packer.filetype.value = "";
  53.       packer.filename.value = "";
  54.       input.value = "";
  55.     } output.value = "";
  56.     message.firstChild.nodeValue = "ready";
  57.     message.className = "";
  58.     input.focus();
  59.     disableDecode(true);
  60.     enableFastDecode();
  61.   }
  62.   function disableDecode(disabled) {
  63.     decodeScript.button.disabled = disabled;
  64.     saveScript.button.disabled = !output.value;
  65.   }
  66.   function enableFastDecode() {
  67.     fastDecode.disabled = Boolean(encoding.value == 0);
  68.     fastDecode.parentNode.className = (encoding.value == 0) ? "disabled" : "";
  69.   }
  70.   function calculateRatio() {
  71.     var calc = output.value.length + "/" + input.value.length;
  72.     var result = Number(eval(calc));
  73.     var ratio = result.toFixed ? result.toFixed(3) : result;
  74.     message.firstChild.nodeValue = "compression ratio: " + calc + "=" + ratio;
  75.     message.className = "";
  76.   }
  77.   function reportError(m, e) {
  78.     message.innerHTML = m + (e ? ": " + e : "" );
  79.     message.className = "error"; } encoding.onclick = enableFastDecode;
  80.     var buttons = document.getElementsByTagName("button" );
  81.     var button, i;
  82.     for (i = 0; (button = buttons[i]); i++) {
  83.       var handler = eval(button.id); button.onclick = handler;
  84.       handler.button = button;
  85.     }
  86.     document.getElementById("uploadScript" ).onchange = uploadScript;
  87.     fastDecode.checked = true;
  88.     var packer = document.forms[0]; packer.className = "";
  89.     clearAll(true);
  90.   }


 
Je l'ai deja dit a plusieurs reprises, si le navigateur peut l'utiliser/l'afficher, alors l'utilisateur pourra le recuperer.


Message édité par cerel le 05-09-2005 à 10:31:57
Reply

Marsh Posté le 05-09-2005 à 10:53:48    

cerel a écrit :

Je doute serieusement de ce genre de mecanismes.
En effet pour que le script "fonctionne" il doit se decoder. Des le moment qu'il est decode, alors il peut etre recupere.


Ouais enfin là le principe n'est pas tant(contrairement à ce que certain semblent penser) de crypter le fichier que de le compresser afin de diminuer la taille du fichier .js (de 40 à 60% habituellement) [:spamafote]  
 
Google utilise le même type de techniques, cf le code source de Google Suggest, complètement incompréhensible de base (enfin il sont moins violents, il font simplement du ws-removal et du renommage de variables, je ne crois pas qu'ils passent par un name-mapping des fonctions native + un eval [:ciler] )


Message édité par masklinn le 05-09-2005 à 10:54:40

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 28-04-2010 à 12:01:30    

zakinster a écrit :

Bonjour,
 
Voila j'ai trouvé un moyen de protéger du code javascript via une page en php, je poste ici car je pense que ça intéresserais surtout des programmeurs javascript...
 


 
bon ce truc marche sous ie, ok! mais de nos jours firefox & co. commencent à remplacer ie.
et ton script ne cache rien si on utilise firefox px.  :non:  
 
mais il existent des moyens 'd'obscurcir' des js.
 
-il y a px. le fameux YUI Compressor : http://yuilibrary.com/downloads/#yuicompressor
 ça enlève tous les espaces et tabulations d'un js et en plus ça renome toutes les variables (noms de variables, les   plus courts possible)
 my_nice_variable se transforme en quelquechose comme a1 px.
 ...du coup personne ne comprend plus le fonctionnement d'un code js banale  :??:  
 (bon, il existent des moyens de décomprsser....mais le temps que ça prends....)
 pour le navigateur, l'effet est contraire : code plus léger et plus rapide.
 
-un autre compresseur : http://javascript.crockford.com/jsmin.html  
 
 

Reply

Marsh Posté le 28-04-2010 à 21:05:02    

tu regarderas la date du post, tu viens de faire un magnifique déterrage.  
Et sinon compressorrater FTW


---------------
Blablaté par Harko
Reply

Marsh Posté le 29-04-2010 à 09:31:45    

gatsu35 a écrit :

tu regarderas la date du post, tu viens de faire un magnifique déterrage.  
Et sinon compressorrater FTW


 
...et alors! ça peut toujours être utile. je m'en fous de la date.  :bounce:  
 

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed