Domanda

    

Questa domanda ha già una risposta qui:

         

Esiste un modo per nascondere o crittografare il codice JavaScript per impedire alle persone di visualizzare, copiare e / o modificare i programmi proprietari?

È stato utile?

Soluzione

Puoi offuscarlo, ma non c'è modo di proteggerlo completamente.

esempio obfuscator: https://obfuscator.io http://www.javascriptobfuscator.com/Default.aspx

Altri suggerimenti

No, non è possibile. Se viene eseguito sul browser client, deve essere scaricato dal browser client. È abbastanza banale usare Fiddler per ispezionare la sessione HTTP e ottenere qualsiasi file js scaricato.

Ci sono trucchi che puoi usare. Uno dei più ovvi è utilizzare un offuscatore javascript.

Inoltre, l'offuscamento impedisce solo lo snooping casuale e non impedisce alle persone di sollevare e utilizzare il codice.

Puoi provare lo script d'azione compilato sotto forma di filmato flash.

Mentre tutti generalmente concordano sul fatto che la crittografia Javascript è una cattiva idea , ci sono alcuni piccoli casi d'uso dove rallentare l'attacco è meglio di niente. Puoi iniziare con YUI Compressor (come ha detto @Ben Alpert) o con JSMin, Uglify o molti altri.

Tuttavia, il caso principale in cui voglio davvero 'nascondere cose' è quando sto pubblicando un indirizzo e-mail. Nota, c'è il problema di Chrome quando si fa clic su "Ispeziona elemento". Mostrerà il tuo codice originale: ogni volta. Questo è il motivo per cui l'offuscamento è generalmente considerato un modo migliore di procedere.

In quella nota, prendo un attacco a due punte, puramente per rallentare i robot spam. Offro / minimizzo js e poi lo eseguo nuovamente attraverso un codificatore (di nuovo, questo secondo passaggio è completamente inutile in Chrome).

Sebbene non sia esattamente un puro codificatore Javascript, il miglior codificatore html che ho trovato è http://hivelogic.com/enkoder/ . Girerà questo:

<script type="text/javascript">
//<![CDATA[
<!--
var c=function(e) { var m="mail" + "to:webmaster";var a="somedomain"; e.href = m+"@"+a+".com";  
};
//-->
//]]>
</script>
<a href="#" onclick="return c(this);"><img src="images/email.png" /></a>

in questo:

<script type="text/javascript">
//<![CDATA[
<!--
var x="function f(x){var i,o=\"\",ol=x.length,l=ol;while(x.charCodeAt(l/13)!" +
"=50){try{x+=x;l+=l;}catch(e){}}for(i=l-1;i>=0;i--){o+=x.charAt(i);}return o" +
".substr(0,ol);}f(\")87,\\\"meozp?410\\\\=220\\\\s-dvwggd130\\\\#-2o,V_PY420" +
"\\\\I\\\\\\\\_V[\\\\\\\\620\\\\o710\\\\RB\\\\\\\\610\\\\JAB620\\\\720\\\\n\\"+
"\\{530\\\\410\\\\WJJU010\\\\|>snnn|j5J(771\\\\p{}saa-.W)+T:``vk\\\"\\\\`<02" +
"0\\\\!610\\\\'Dr\\\\010\\\\630\\\\400\\\\620\\\\700\\\\\\\\\\\\N730\\\\,530" +
"\\\\2S16EF600\\\\;420\\\\9ZNONO1200\\\\/000\\\\`'7400\\\\%n\\\\!010\\\\hpr\\"+
"\\= -cn720\\\\a(ce230\\\\500\\\\f730\\\\i,`200\\\\630\\\\[YIR720\\\\]720\\\\"+
"r\\\\720\\\\h][P]@JHADY310\\\\t230\\\\G500\\\\VBT230\\\\200\\\\Clxhh{tzra/{" +
"g0M0$./Pgche%Z8i#p`v^600\\\\\\\\\\\\R730\\\\Q620\\\\030\\\\730\\\\100\\\\72" +
"0\\\\530\\\\700\\\\720\\\\M410\\\\N730\\\\r\\\\530\\\\400\\\\4420\\\\8OM771" +
"\\\\`4400\\\\$010\\\\t\\\\120\\\\230\\\\r\\\\610\\\\310\\\\530\\\\e~o120\\\\"+
"RfJjn\\\\020\\\\lZ\\\\\\\\CZEWCV771\\\\v5lnqf2R1ox771\\\\p\\\"\\\\tr\\\\220" +
"\\\\310\\\\420\\\\600\\\\OSG300\\\\700\\\\410\\\\320\\\\410\\\\120\\\\620\\" +
"\\q)5<: 0>+\\\"(f};o nruter};))++y(^)i(tAedoCrahc.x(edoCrahCmorf.gnirtS=+o;" +
"721=%y;++y)87<i(fi{)++i;l<i;0=i(rof;htgnel.x=l,\\\"\\\"=o,i rav{)y,x(f noit" +
"cnuf\")"                                                                     ;
while(x=eval(x));
//-->
//]]>
</script>

Forse è abbastanza per rallentare alcuni robot spam. Non ho mai ricevuto spam usando questo (! Ancora).

Uno dei migliori compressori (non specificamente un offuscatore) è il YUI Compressor .

JavaScript è un linguaggio di scripting e pertanto rimane in forma leggibile dall'uomo fino al momento in cui deve essere interpretato ed eseguito dal runtime JavaScript.

L'unico modo per nasconderlo parzialmente, almeno dalle menti meno tecniche, è offuscare.

L'offuscamento rende più difficile la lettura da parte dell'uomo, ma non impossibile per gli esperti di tecnologia.

Se hai qualcosa in particolare che vuoi nascondere (come un algoritmo proprietario), mettilo sul server o mettilo in un filmato Flash e chiamalo con JavaScript. Scrivere ActionScript è molto simile alla scrittura di JavaScript e puoi comunicare tra JavaScript e ActionScript. Puoi fare lo stesso con Silverlight, ma Silverlight non ha la penetrazione di Flash.

Tuttavia, ricorda che qualsiasi telefono cellulare può eseguire JavaScript, ma non Silverlight o Flash, quindi stai paralizzando i tuoi utenti di dispositivi mobili se utilizzi Flash o Silverlight.

L'unico modo sicuro per proteggere il tuo codice non è regalarlo. Con la distribuzione client, non è possibile evitare che il client abbia accesso al codice.

Quindi la risposta breve è: non puoi farlo

La risposta più lunga sta prendendo in considerazione flash o Silverlight. Anche se credo che Silverlight sarà lieto di rivelare i suoi segreti con il riflettore in esecuzione sul client.

Non sono sicuro che esista qualcosa di simile con la piattaforma Flash.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top