Compatibilità di esecuzione
Scegli il target in base al runtime effettivo. Le build per browser e per Node possono contenere difese diverse; un target browser non sostituisce Node.
target
browser- Chrome, Firefox, Safari, Edge.browser-no-eval- comebrowser, ma l'output non usaeval(). Usalo quando la pagina di destinazione ha una Content Security Policy che vietaeval/unsafe-eval.node- ambiente Node.js. Le opzioni specifiche del browser sono disattivate (richiedonowindow/documente in Node non avrebbero effetto o genererebbero un errore). Alcune difese divmSelfDefendingche si basano su API disponibili solo nel browser (rilevamento dei browser headless, ripristino tramite realm pulito basato su iframe, controlli anti-inspector/DOM) non vengono emesse per questo target.service-worker- contesto Service Worker. Nessunwindow, nessundocument, un diverso oggetto globaleself.userscript- sandbox di un gestore di userscript (ad esempio Tampermonkey). Le difese divmSelfDefendingvengono adattate di conseguenza. Richiede l'offuscamento VM (o Parse HTML) e l'offuscatore v6.9.0+.bytenode- per il codice che verrà compilato in.jsccon bytenode. Richiede l'offuscamento VM (o Parse HTML) e l'offuscatore v6.13.0+.
Ambiente browser e domini
Le dichiarazioni su dove viene eseguito il codice devono corrispondere al deployment reale. browserEnvironment deve descrivere come la build viene effettivamente servita (vedi Browser Environment) e VM Domain Lock deve elencare tutti i domini che la servono (vedi VM Domain Lock). L'automazione e i debugger possono attivare le difese avanzate; consulta Test e CI.
JavaScript
I nomi delle funzioni e il loro testo sorgente possono cambiare con l'offuscamento. Non usare .name o .toString() come dati stabili dell'applicazione; usa invece identificatori espliciti. Le variabili globali pubbliche possono restare visibili quando le tue impostazioni lo richiedono.
strictMode
strictMode: null e strictMode: false riconoscono comunque come strict le direttive esplicite, i moduli ES e i metodi di classe. strictMode: true tratta tutto l'input come strict. Fai corrispondere l'impostazione al contesto di esecuzione finale; un bundler che aggiunge la strict mode dopo l'offuscamento può cambiare il comportamento.
Pipeline di build
Compila TypeScript o JSX ed esegui il bundling dell'applicazione prima della fase finale di offuscamento. Conserva i commenti /* javascript-obfuscator:vm */ durante quella build, in modo che la modalità comment possa ancora trovarli. Non minificare, formattare né riscrivere in altro modo l'output di Self Defending o di VM Self Defending dopo la sua generazione. Le source map non sono disponibili per l'offuscamento VM e HTML.
