Sicurezza Javascript - Offuscamento del codice



by   |  LETTURE 16197

Sicurezza Javascript - Offuscamento del codice

Uno dei metodi più semplici e immediati per rendere la vita difficile a chi cerca di barare o semplicemente manomettere i nostri giochi in HTML5 è quello di offuscare il codice sorgente. Sappiamo con certezza che non c'è modo per impedire che il codice venga letto, possiamo almeno renderlo quanto più incomprensibile alla lettura così da complicare i tentativi di manomissione.

Per offuscare il nostro codice esistono numerosi tool che girano online, molti dei quali restituiscono output decisamente illeggibile ma comunque eseguibile esattamente come quello originario.
Provate ad esempio a cliccare su questo sito gratuito: http://www.javascriptobfuscator.com/default.aspx L'uso del tool è molto semplice, si inserisce il codice nel riquadro in alto e cliccando su OBFUSCATE viene generato un output nel riquadro sottostante.

Nell'esempio viene mostrato un sorgente di questo tipo:

 var a="Hello World!";  function MsgBox(msg) {     alert(msg+"n"+a); } MsgBox("OK");
Che offuscato diventa:
 var _0x4e29=["x48x65x6Cx6Cx6Fx20x57x6Fx72x6Cx64x21","x0A","x4Fx4B"];var a=_0x4e29[0]; function MsgBox(_0x5ff4x3){alert(_0x5ff4x3+_0x4e29[1]+a);} ;MsgBox(_0x4e29[2]);
Proviamo quest'altro tool online sempre completamente gratuito: http://www.minifyjs.com/javascript-compressor/ Inseriamo lo stesso codice e dopo aver selezionato il metodo Numeric su Advanced Options otteniamo il seguente risultato:
 eval(function(p,a,c,k,e,d){while(c--){if(k[c]){p=p.replace(new RegExp(´´+c+´´,´g´),k[c])}} return p}(´4 0="3 5!";9 2(1){6(1+"7"+0)}2("8");´,10,10,´a|msg|MsgBox|Hello|var|World|alert |n|OK|function´.split(´|´)))
Come inizio non c'è male, abbiamo scoraggiato una buona fetta di utenti dal tentativo di violare il nostro gioco ma questo non significa dormire sonni tranquilli perchè i più smaliziati possono trovare il modo di risalire comunque a funzioni o dati importanti, nonchè sfruttare tecniche di deoffuscamento tramite tool appositi.