Domande frequenti
Domande generali
Domande comuni sull'offuscamento JavaScript e sul suo funzionamento.
I motivi per proteggere il codice sono numerosi: impedire che il tuo lavoro venga semplicemente copiato (aspetto particolarmente importante per i progetti lato client come i giochi HTML5), rendere il codice più difficile da comprendere e da modificare, e proteggere un lavoro non ancora pagato, così da poter mostrare ai clienti una build funzionante senza consegnare il codice sorgente.
L’offuscamento standard riscrive il JavaScript in un JavaScript più difficile da leggere: i nomi vengono sostituiti, le stringhe spostate e codificate, il flusso di controllo ristrutturato, ma il risultato è ancora JavaScript che un debugger può eseguire passo passo. L’offuscamento VM (Virtual Machine) compila i corpi delle funzioni in bytecode personalizzato e include un interprete incorporato che lo esegue, così la logica protetta non esiste più come JavaScript. Consulta Offuscamento VM per sapere quali funzioni sono coperte e come selezionarle.
Sì. Imposta vmTargetFunctionsMode su comment, poi marca ogni funzione da proteggere con /* javascript-obfuscator:vm */. Conserva questi commenti in ogni fase della build eseguita prima dell’offuscamento. Vedi Targeting di funzioni specifiche.
No. Chiavi API, segreti e credenziali non devono MAI essere memorizzati nel codice frontend. Anche con il massimo livello di offuscamento, qualsiasi dato presente nel JavaScript frontend può essere estratto da un attaccante determinato. L'offuscamento rende il reverse engineering più difficile, ma non è cifratura e non deve essere considerato un mezzo per mettere al sicuro i segreti. Conserva invece i segreti sul tuo server backend, usa variabili d'ambiente lato server, instrada le chiamate API attraverso il tuo backend per nascondere le chiavi oppure usa token a breve scadenza emessi dal tuo server.
L’offuscamento aumenta lo sforzo necessario per capire e modificare il codice, che l’analisi sia svolta da una persona, da uno strumento o da un assistente IA; non garantisce l’impossibilità del reverse engineering. L’esecuzione resta osservabile in un ambiente controllato dall’attaccante. Mantieni segreti e decisioni di sicurezza definitive sul server. Come la VM trasforma il codice.
Per prima cosa escludi le difese di runtime. VM Self Defending e VM Debug Protection interrompono di proposito l’esecuzione con strumenti di automazione, browser headless e debugger, e quando target non corrisponde all’ambiente reale: esegui quindi i test funzionali su una build di test separata in cui sono disattivate. Se anche quella build non funziona, restringi il problema con vmTargetFunctionsMode: 'comment' virtualizzando una funzione alla volta. La guida alla risoluzione dei problemi illustra ogni passaggio e cosa includere in una segnalazione di bug.
L’offuscatore aggiunge codice: gli identificatori ricevono nomi generati, le stringhe vengono spostate in un array di stringhe con funzioni di accesso (facoltativamente codificato) e, con l’offuscamento VM, un intero interprete di macchina virtuale viene incluso insieme al bytecode. Le dimensioni non sono un aspetto particolarmente critico: il codice offuscato si comprime bene con gzip o Brotli, attivi per impostazione predefinita sulla maggior parte dei server.
I preset più pesanti possono aumentare dimensioni e tempi di esecuzione. Misura avvio, percorsi frequenti e dimensioni compresse del tuo bundle, senza affidarti a moltiplicatori fissi di rallentamento. Riferimento delle opzioni · Best practice
No. Riscrivere l’output può comprometterlo, soprattutto con Self Defending o VM Self Defending, che rilevano le modifiche al codice. Puoi passare il codice attraverso un minificatore prima dell’offuscamento, purché conservi i commenti javascript-obfuscator come /* javascript-obfuscator:vm */.
Non conserviamo il tuo codice sorgente. L’offuscamento di base del JavaScript avviene nel browser. L’offuscamento VM e HTML invia il sorgente ai nostri server, che lo elaborano e lo scartano; quando una richiesta supera 4.4 MB, i piani Team e Business lo caricano in uno spazio di archiviazione temporaneo che viene eliminato dopo l’elaborazione. Per la gestione degli abusi e l’analisi dell’utilizzo conserviamo per tre mesi un hash SHA-256 di ogni output offuscato e alcune delle impostazioni usate (come il preset, il target e le difese della VM), mai il codice stesso né alcun suo contenuto. La cronologia della dashboard è salvata solo nel browser; gestiscila da Cronologia.
No. L’offuscatore non conserva i nomi, i commenti né la formattazione originali, quindi l’output non può essere riconvertito nel sorgente. Non si tratta di una garanzia di sicurezza (vedi sopra la domanda sulla deoffuscazione), ma significa che devi conservare l’originale in un luogo sicuro.
Sì. Puoi selezionare "Node" come target nelle opzioni di offuscamento per ottimizzare l'output per gli ambienti Node.js.
Sono supportati sintassi ES2015+, async/await, optional chaining e campi privati di classe; prova la sintassi più recente con la versione dell’offuscatore che selezioni. Compila TypeScript e JSX e crea il bundle dell’applicazione prima dell’offuscamento: vedi Compatibilità di esecuzione. I file HTML sono supportati tramite parseHtml; vedi Offuscamento dei file HTML.
L'output offuscato, incluso l'interprete VM e il livello Self Defending, è attivamente supportato e testato sui browser desktop evergreen e su iOS 16+ (all'incirca gli ultimi 4 anni). I browser meno recenti sono supportati con un approccio best-effort fino a un limite minimo dato dal supporto dei moduli ES2015; tutto ciò che si colloca al di sotto, Internet Explorer compreso, non rientra nell'ambito supportato.
Consulta i piani e i prezzi per la protezione VM oppure prova l<playground>area di prova online gratuita</playground> per loffuscamento standard. Per una panoramica completa leggi la guida introduttiva.
Prezzi e account
Domande su piani, fatturazione e limiti di utilizzo.
L'utilizzo è misurato in base alla dimensione in byte del codice sorgente di input. Ogni operazione di offuscamento prevede un addebito minimo di 0,1 MB (102.400 byte) per garantire un'allocazione equa delle risorse. Ad esempio, l'offuscamento di un file da 50 KB viene conteggiato come 0,1 MB sulla quota. I file di dimensioni superiori a 0,1 MB vengono conteggiati in base alla loro dimensione effettiva.
Una volta raggiunto il limite di offuscamento VM, puoi continuare a utilizzare gratuitamente e senza limiti l'offuscamento standard (nel browser). Per i piani a pagamento la quota VM viene azzerata ogni mese, nella ricorrenza mensile della data di inizio dell'abbonamento, anche con i piani annuali. Il piano Free prevede un limite a vita che non viene ripristinato. Con i piani che hanno un limite VM giornaliero, una volta raggiunto quel limite puoi offuscare di nuovo con la VM il giorno successivo. Puoi passare in qualsiasi momento a un piano superiore per ottenere una quota di offuscamento VM maggiore.
Sì, il passaggio a un piano superiore o inferiore è possibile in qualsiasi momento. In caso di passaggio a un piano superiore viene addebitato un importo proporzionale al periodo di fatturazione residuo. In caso di passaggio a un piano inferiore, il nuovo prezzo si applica a partire dal ciclo di fatturazione successivo.
L'abbonamento può essere annullato in qualsiasi momento. L'accesso al piano resta disponibile fino al termine del periodo di fatturazione in corso. Si precisa che non vengono effettuati rimborsi per periodi di fatturazione parziali o per il tempo non utilizzato.
Accettiamo tutte le principali carte di credito (Visa, Mastercard, American Express) e le carte di debito tramite Stripe, il nostro processore di pagamento sicuro. Tutte le transazioni sono crittografate e conformi allo standard PCI.
