JS
Obfuscatore JS
Offusca il JavaScript per renderlo difficile da leggere.
Informazioni sull'offuscamento JavaScript
L'offuscamento riscrive il JavaScript in modo che funzioni esattamente come prima, ma sia molto più difficile da leggere per una persona — rinominando le variabili con stringhe prive di significato, suddividendo e codificando le stringhe letterali e facendo passare il normale flusso del codice attraverso ulteriori deviazioni. A differenza della minificazione, l'obiettivo non è un file più piccolo, ma uno confuso.
I tre livelli scambiano la forza dell'offuscamento con la dimensione dell'output e il costo a runtime. Basso rinomina gli identificatori e sposta i literal di stringa in un array; medio aggiunge il control-flow flattening (ristrutturare una logica semplice in una macchina a stati più difficile da seguire) e l'iniezione di codice morto; alto aggiunge stringhe codificate in RC4, divide i literal di stringa in blocchi e attiva un codice autodifensivo che si rompe se l'output viene riformattato o passato per un abbellitore. Livelli più alti producono file notevolmente più grandi ed esecuzione più lenta, quindi riserva il livello alto a codice che vale davvero il costo, come un controllo di licenza, piuttosto che un'intera applicazione.
Dove lo incontrerai
- Rendere la logica lato client più difficile da copiare o decodificare
- Proteggere controlli di licenza o chiavi API incorporate nel codice front-end
- Distribuire un bundle senza rivelare i nomi interni di funzioni e variabili
- Aumentare il costo di manomissione del codice eseguito in un ambiente non attendibile
Domande frequenti
Il codice offuscato è davvero sicuro?
No. L'offuscamento aumenta lo sforzo necessario per leggere o modificare il codice, ma qualsiasi cosa eseguita nel browser può essere eventualmente deoffuscata da una persona determinata. Non fare mai affidamento su di esso per proteggere segreti reali come chiavi API private.
Qual è la differenza tra offuscare e minificare?
La minificazione riduce le dimensioni del file rimanendo facile da invertire con un formattatore. L'offuscamento rende deliberatamente la logica confusa — identificatori rinominati, stringhe codificate, flusso di controllo ristrutturato — anche dopo la riformattazione.
L'offuscamento renderà più lento il mio codice?
Leggermente, soprattutto ai livelli più alti — le deviazioni extra e la decodifica delle stringhe aggiungono un piccolo costo di esecuzione. Per la maggior parte del codice front-end questo è trascurabile; per i cicli critici per le prestazioni vale la pena testare.
Cosa cambiano concretamente i livelli basso, medio e alto?
Basso rinomina variabili e funzioni con nomi brevi e senza significato e nasconde i literal di stringa in un array. Medio aggiunge il control-flow flattening — ristrutturare i rami della tua logica in una macchina a stati più difficile da seguire — più codice morto iniettato che non fa altro che aggiungere rumore. Alto aggiunge stringhe codificate in RC4, divide i literal in blocchi riassemblati a runtime, e codice autodifensivo che rileva e reagisce a una riformattazione. Ogni livello in più costa più dimensione dell'output e un'esecuzione più lenta, in cambio di più sforzo per invertirlo.