Cosa fa
L’offuscatore JavaScript riscrive uno script in modo che funzioni esattamente come prima ma sia molto più difficile da leggere e copiare per le persone. I nomi di variabili e funzioni diventano identificatori senza senso come _0x3f2a, le stringhe letterali finiscono in una tabella di lookup codificata e, ai livelli più alti, il flusso di controllo viene rimescolato e viene inserito codice morto.
È utile per giochi nel browser, demo, widget e controlli di licenza che distribuisci come JavaScript puro e che non vuoi vedere copiati parola per parola.
Come si usa
- Incolla il tuo JavaScript o apri un file
.js. - Scegli un’Intensità:
- Bassa rinomina i nomi locali e sposta le stringhe in un array di lookup. L’output resta veloce e abbastanza compatto.
- Media aggiunge stringhe codificate, appiattimento del flusso di controllo e un po’ di codice morto.
- Alta applica tutto al massimo. Il risultato può essere molte volte più grande e sensibilmente più lento.
- Attiva Rinomina i nomi globali solo se nulla al di fuori dello script fa riferimento alle sue funzioni o variabili di primo livello.
- Disattiva Output su una sola riga se vuoi il risultato distribuito su più righe.
- Copia o scarica il codice offuscato e provalo prima di metterlo in produzione.
Esempio
L’esempio definisce una funzione greet e un contatore di visite. Dopo l’offuscamento a intensità bassa il codice è una sola riga di nomi esadecimali, eppure eseguendolo stampa ancora Hello, Ada! You have visited 1 time(s).
Offuscamento e minificazione a confronto
La minificazione, come quella del minificatore JavaScript e CSS, rimuove gli spazi e accorcia i nomi per rendere i file più piccoli e più veloci da scaricare. L’offuscamento va nella direzione opposta sulla dimensione: aggiunge deliberatamente livelli di indirezione per rendere il codice più difficile da capire. Molti progetti minificano tutto e offuscano solo i pochi file che contengono logica da proteggere.
Limiti
L’offuscamento non può proteggere i segreti. Tutto ciò che il browser può eseguire, un utente prima o poi può ispezionarlo, quindi tieni sul server le chiavi API e le regole di business che devono restare private. Le impostazioni più pesanti rallentano anche il codice, quindi evitale nei cicli critici e nelle pagine sensibili alle prestazioni.
Domande frequenti
› L'offuscamento cambia ciò che fa il mio codice?
No. Lo script offuscato si comporta come l'originale; cambia solo la forma. Esegui sempre i test sulla build offuscata, perché il codice che ispeziona il proprio sorgente o i nomi delle funzioni può comportarsi diversamente.
› Il codice offuscato si può riportare in chiaro?
Non completamente, ma una persona determinata e con tempo a disposizione può comunque capire cosa fa. Considera l'offuscamento un dosso contro la copia occasionale, mai un posto dove nascondere segreti come le chiavi API.
› Quando dovrei attivare Rinomina i nomi globali?
Solo quando lo script è autonomo. Rinominare i globali rompe gli attributi HTML, gli altri script o i test che chiamano per nome le tue funzioni di primo livello.
› Il mio codice viene caricato?
No. L'offuscamento avviene nel tuo browser con la libreria open source javascript-obfuscator.