Cum pot ascunde sau cripta codul JavaScript? [duplicat] (Programare, Javascript, Criptare, Obfuscation)

jasonGreen a intrebat.

Există vreo modalitate de a ascunde sau de a cripta codul JavaScript pentru a împiedica oamenii să vizualizeze, să copieze și/sau să modifice programe proprietare?

Comentarii

  • Încercați acest link: stackoverflow.com/questions/6869312/… -Jepp –  > Por Jepp.
7 răspunsuri
Sev

Îl puteți ofusca, dar nu există nicio modalitate de a-l proteja complet.

exemplu de obfuscator: https://obfuscator.io

Comentarii

  • Funcționează bine și nu returnează erori prin opțiuni implicite. Vă mulțumim! –  > Por Sam.
  • Utilizați Encode.js : encodejs.devincity.com –  > Por nachshon f.
  • Îl puteți ascunde complet din vizualizarea sursei, dar va fi vizibil folosind unele cunoștințe avansate cu Chrome Inspector, sau alte instrumente. –  > Por Lucian Minea.
  • dacă salvez URL-ul video YouTube în variabilă și după ce utilizatorul introduce parola corectă URL-ul va intra în Iframe. ÎNTREBAREA este dacă se va securiza url-ul youtube atât în codul sursă cât și în chrome inspector. vreau ca utilizatorul să poată vedea doar video în site-ul meu și să nu poată copia url-ul ? Dar vreau să fac acest lucru cu JavaScript sau PHP –  > Por muhaymin khan.
Alan

Nu, nu este posibil. Dacă rulează pe browserul clientului, trebuie să fie descărcat de către browserul clientului. Este destul de banal să folosești Fiddler pentru a inspecta sesiunea HTTP și a obține orice fișier js descărcat.

Există trucuri pe care le puteți folosi. Unul dintre cele mai evidente este să folosiți un javascript obfuscator.

Dar, din nou, ofuscarea previne doar spionajul ocazional și nu împiedică oamenii să ridice și să utilizeze codul dvs.

Puteți încerca un script de acțiune compilat sub forma unui film flash.

cmroanirgo

În timp ce toată lumea va fi de acord, în general, că criptarea Javascript este un idee proastă, există câteva cazuri mici de utilizare în care încetinirea atacului este mai bună decât nimic.Puteți începe cu YUI Compressor (așa cum a spus @Ben Alpert), sau JSMin, Uglify, sau multe altele.

Cu toate acestea, principalul caz în care vreau să „ascund cu adevărat lucruri” este atunci când public o adresă de e-mail. Rețineți, există problema lui Chrome atunci când faceți clic pe ‘inspect element’. Acesta va afișa codul original: de fiecare dată. Acesta este motivul pentru care ofuscarea este în general considerată ca fiind o cale mai bună de urmat.

În această notă, eu iau un atac cu două direcții, pur și simplu pentru a încetini roboții de spam. Obfuscates/minific js-ul și apoi îl trec din nou printr-un encoder (din nou, acest al doilea pas este complet inutil în Chrome).

Deși nu este chiar un codificator pur Javascript, cel mai bun codificator html pe care l-am găsit este http://hivelogic.com/enkoder/. Acesta va transforma acest lucru:

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

în acest lucru:

<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\
\"+
"\{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>

Poate că este suficient pentru a încetini câțiva roboți de spam. Eu nu am primit niciun spam folosind acest lucru (!încă).

Comentarii

  • O altă alternativă este cloakedjs.com care ofuscă, criptează și adaugă prevenirea depanării și blocarea domeniului. Tot nu este 100% sigur… dar, din nou, este într-un browser. –  > Por AnyWhichWay.
Sophie Alpert

Unul dintre cele mai bune compresoare (nu este în mod specific un obfuscator) este YUI Compressor.

Comentarii

  • Linkul furnizat nu funcționează –  > Por Tausif Anwar.
BakerTheHacker

JavaScript este un limbaj de scripting și, prin urmare, rămâne în formă lizibilă pentru oameni până când este momentul ca acesta să fie interpretat și executat de către runtime-ul JavaScript.

Singura modalitate de a-l ascunde parțial, cel puțin de mințile mai puțin tehnice, este ofuscarea.

Ofuscarea îngreunează citirea de către oameni, dar nu o face imposibilă pentru cei cu cunoștințe tehnice.

Andrew Harry

Singura modalitate sigură de a vă proteja codul este să nu-l dați de gol. În cazul implementării clientului, nu se poate evita ca acesta să aibă acces la cod.

Așadar, răspunsul scurt este: nu puteți face acest lucru.

Răspunsul mai lung este să luați în considerare Flash sau Silverlight. Deși cred că Silverlight își va dezvălui cu plăcere secretele cu reflector care rulează pe client.

Nu sunt sigur dacă există ceva similar cu platforma flash.

Nosredna

Dacă ai ceva anume pe care vrei să îl ascunzi (cum ar fi un algoritm proprietar), pune-l pe server sau pune-l într-un film Flash și apelează-l cu JavaScript. Scrierea ActionScript este foarte asemănătoare cu scrierea JavaScript și puteți comunica între JavaScript și ActionScript. Puteți face același lucru cu Silverlight, dar Silverlight nu are penetrarea pe care o are Flash.

Cu toate acestea, nu uitați că orice telefon mobil poate rula JavaScript, dar nu și Silverlight sau Flash, așa că, dacă optați pentru Flash sau Silverlight, vă paralizați utilizatorii de telefoane mobile.

Comentarii

  • În cazul în care cineva vede acest lucru și nu-și dă seama că nu mai suntem în 2009, nu faceți asta. Flash și Silverlight sunt acum aproape moarte. –  > Por Liam.