Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1171 connectés 

  FORUM HardWare.fr
  Programmation
  HTML/CSS

  Protéger du code javascript via un script php

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Protéger du code javascript via un script php

n°1191531
zakinster
Posté le 04-09-2005 à 11:38:27  profilanswer
 

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
mood
Publicité
Posté le 04-09-2005 à 11:38:27  profilanswer
 

n°1191536
plainsofpa​in
Pingouino's lover
Posté le 04-09-2005 à 11:49:30  profilanswer
 

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
n°1191540
plainsofpa​in
Pingouino's lover
Posté le 04-09-2005 à 11:53:14  profilanswer
 

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
n°1191541
KangOl
Profil : pointeur
Posté le 04-09-2005 à 11:53:18  profilanswer
 

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...
n°1191545
KangOl
Profil : pointeur
Posté le 04-09-2005 à 11:59:01  profilanswer
 

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


---------------
Nos estans firs di nosse pitite patreye...
n°1191547
KangOl
Profil : pointeur
Posté le 04-09-2005 à 12:01:48  profilanswer
 

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


---------------
Nos estans firs di nosse pitite patreye...
n°1191562
plainsofpa​in
Pingouino's lover
Posté le 04-09-2005 à 12:33:25  profilanswer
 

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
n°1191568
KangOl
Profil : pointeur
Posté le 04-09-2005 à 12:42:30  profilanswer
 

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


---------------
Nos estans firs di nosse pitite patreye...
n°1191570
plainsofpa​in
Pingouino's lover
Posté le 04-09-2005 à 12:44:33  profilanswer
 

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
n°1191574
masklinn
í dag viðrar vel til loftárása
Posté le 04-09-2005 à 12:48:17  profilanswer
 

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
mood
Publicité
Posté le 04-09-2005 à 12:48:17  profilanswer
 

n°1191584
plainsofpa​in
Pingouino's lover
Posté le 04-09-2005 à 13:09:16  profilanswer
 

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
n°1192046
cerel
Posté le 05-09-2005 à 10:14:24  profilanswer
 

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
n°1192069
masklinn
í dag viðrar vel til loftárása
Posté le 05-09-2005 à 10:53:48  profilanswer
 

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
n°1988340
bell418
Posté le 28-04-2010 à 12:01:30  profilanswer
 

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  
 
 

n°1988529
gatsu35
Blablaté par Harko
Posté le 28-04-2010 à 21:05:02  profilanswer
 

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


---------------
Blablaté par Harko
n°1988597
bell418
Posté le 29-04-2010 à 09:31:45  profilanswer
 

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:  
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  HTML/CSS

  Protéger du code javascript via un script php

 

Sujets relatifs
[Javascript] problème avec la regex searchQue lit-on sur un code source
Communication applet javascriptProp. flash pour fonction javascript TGetProperty() et TSetProperty()
autosier mon script VBS dans mcafee[Javascript] Récupération de la valeur d'un select
cherche un script php pour album photo[javascript] possible de savoir l'index de window.history ?
Commandes BAT en Javascript(Javascript) Proteger son code source, Script Encoder...la solution?
Plus de sujets relatifs à : Protéger du code javascript via un script php


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR