2011-12-30 11 views
12

Ho script JavaScript nella mia applicazione contenente JavaScript e funzioni jQuery. Tutte le interazioni dell'utente con la mia applicazione sono dinamiche e passano all'applicazione tramite jQuery.Come posso offuscare o rendere illeggibili i miei file JavaScript?

Quello che ho capito è che quando eseguo la mia applicazione, dal lato client, il client può vedere il mio codice sorgente visualizzando l'origine della pagina (Ctrl + U).

Come posso nascondere o fare qualcosa in modo che l'utente non possa capire o leggere la fonte?

Voglio fare qualcosa di simile a ciò che fa Facebook. Visualizzando l'utente di Facebook non è possibile riutilizzare il suo codice sorgente o capirlo.

Ho cercato su Google e ho scoperto che questo processo si chiama offuscamento, ma questo non funziona per me.

Ho provato questo:

http://www.javascriptobfuscator.com/default.aspx

e

http://dean.edwards.name/packer/

e

http://www.daftlogic.com/projects-online-javascript-obfuscator.htm

anche i provato http://www.jasob.com/

Ma per me è inutile.

+0

Si ** può ** vedere tutto il codice cliente sia per Facebook che per Google. È offuscato, il che significa che è * più difficile * leggerlo, ma non impossibile. Ma la cosa più importante, non hai spiegato cosa intendevi con * "non è utile per me" *. Qual è il vero problema che stai affrontando con questi obfuscator? – Groo

+0

In realtà penso che sia solo minimizzato. Anche se questa è l'offuscamento, non è lo scopo principale di ciò. – ThiefMaster

+0

@Groo: significa che ho provato obfuscator nel mio file js ma non è riuscito a testare la mia applicazione. non eseguirà alcuna operazione sull'evento click. mi puoi suggerire quale strumento offuscatore io uso per offuscare il mio js. – Bhargav

risposta

23

Se qualcuno si preoccupa veramente del proprio codice, prenderà il carico di lavoro di non minificante (sostituendo a caso i nomi delle variabili/funzioni utili). Qualsiasi altra cosa come "crittografia" o imballaggio è solo snake oil poiché può essere ripristinato estremamente facile. Quindi risparmia un po 'di lavoro e piuttosto spendilo per rendere migliore la tua applicazione.

Quindi: l'unica cosa che dovresti fare su un sistema di produzione è la minimizzazione del codice JS. Questo lo rende più piccolo e quindi più veloce da caricare - quindi è davvero un vantaggio. Oltre a ciò, lo renderà meno leggibile per le persone che sono solo curiose di dare un'occhiata veloce ma non vogliono sprecare tempo.

I file JS di Facebook, ad esempio, sono semplicemente miniati, molto probabilmente solo per motivi di larghezza di banda/prestazioni.


Il modo più semplice per minify il tuo JavaScript sta utilizzando il servizio web di Google per esso: http://closure-compiler.appspot.com/home
Nota che ha un limite di 1 MB, quindi se il vostro JS è che enorme, potrebbe essere necessario scaricare il minifier basato su Java per eseguirlo localmente.

+0

sì hai ragione. puoi per favore suggerirmi uno strumento per minimizzare il codice JS? – Bhargav

+0

Aggiunto un collegamento alla mia risposta – ThiefMaster

+0

Non sono riuscito a trovare il minificatore basato su Java. C'è qualche link? –

2

Tutto ciò che ThiefMaster dice è vero. Vale anche la pena notare che le tue app dovrebbero essere progettate con il presupposto che gli utenti possano vedere e manipolare tutto sul client. Se sei preoccupato dell'offuscamento perché ritieni che impedisca agli utenti di visualizzare dati riservati o di manipolare informazioni come i prezzi, è necessario riprogettare l'applicazione in modo che la logica protetta risieda sul server.

+0

sì, sei vero. Volevo solo che il mio js fosse difficile da leggere al primo punto. Ho implementato la mia logica solo sul server. Ho appena trasferito i dati dell'utente al controller del server da jQuery. Volevo solo che quell'utente non sappia nemmeno cosa sta succedendo sul retro. questo è il mio scopo di usare l'obfuscator. – Bhargav

+0

Anche se si completa la sorgente in modo irreversibile (non possibile) i client moderni consentono comunque all'utente di monitorare il traffico di rete dal proprio client. :/Quale funzionalità specifica ti preoccupa di nascondere? – RSG

+0

andrò per offuscare il mio file js. qualsiasi riferimento accolto. Grazie... – Bhargav

0

Come ho bisogno di minimizzare il mio codice sorgente javascript, sto cercando un programma javascript cui si minimizza qualsiasi codice javascript.

Perché un minificatore javascript? Perché, sto scrivendo un codice javascript casuale dal server web al client.

Dovrei utilizzare "node.js" sul server Web per eseguire un programma javascript che genera un codice javascript e lo minimizza al volo e lo invia al client.

Questo programma javascript è un: programma di crittografia e decrittografia. Il risultato del codice javascript per il client dovrebbe contenere una funzione javascript che decodifica ogni porzione di una versione json o esadecimale di un dato crittografato. La funzione esegue alcune più, meno e moltiplicazioni di numeri interi. A volte, posso generare una condizione (if, then and else) per calcolare due diverse operazioni. Questa funzione viene utilizzata per decrittografare due o più ingressi di parametri.

Questa è la funzione randomizzata: ogni volta che il client richiede alcuni dati privati, il server Web genera due diverse funzioni javascript: una per la crittografia e l'altra per la decrittografia. La funzione di decodifica viene inviata al client. La funzione di crittografia viene utilizzata dal server Web per crittografare e inviare dati privati ​​al client. È logico per l'offuscamento: ogni volta che il processo è in esecuzione, ogni volta che la funzione di invio è completamente diversa.

E, per convincere la crittografia/decodifica è molto sicuro, aggiungo per il cliente, una conversione valori tabulare di due o più parametri; ma, i valori tabulari sono generati, infatti, da una funzione scritta solo per il server Web e contiene alcune costanti numeriche, che non vengono MAI inviate al client. Quindi, chiunque desideri decodificare deve avere il valore delle costanti.

Sono spiegato che processo perché:

  1. si sono prese alcune cose su di offuscamento in javascript codice sorgente; ma, l'offuscamento in javascript non è ancora stato implementato dal web server e dai browser ... forse, potrebbe succedere ... ma, che tipo di soluzioni è utile con l'aiuto di "SSL-ize" tutta la trasmissione su Internet.

  2. È possibile crittografare e decrittografare con funzioni di crittografia/decrittografia che possono essere letti. E senza il costo dei certificati SSL. Anche "un uomo nel mezzo" decodifica i dati crittografati; per questo, deve solo eseguire la funzione javascript. Ok ... ma immagina che la funzione di decifrazione dei javascript sia anche codificata ... quindi, "l'uomo nel mezzo" deve eseguire la funzione di decodifica e quindi decrittografare nuovamente il contenuto decrittografato che è la funzione javascript per decodificare i dati crittografati.

E, immaginate se il server web fa una domanda per il cliente e la risposta unica è gestita dal calcolo risultato del cliente (il cui non inviati attraverso Internet) ... è impossibile "l'uomo nel mezzo "avere la risposta.

Dai un'occhiata alla mia idea; sto aspettando commenti da qualcuno.

Problemi correlati