Documentazione
/

Compatibilità di esecuzione

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 - come browser, ma l'output non usa eval(). Usalo quando la pagina di destinazione ha una Content Security Policy che vieta eval/unsafe-eval.
  • node - ambiente Node.js. Le opzioni specifiche del browser sono disattivate (richiedono window/document e in Node non avrebbero effetto o genererebbero un errore). Alcune difese di vmSelfDefending che 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. Nessun window, nessun document, un diverso oggetto globale self.
  • userscript - sandbox di un gestore di userscript (ad esempio Tampermonkey). Le difese di vmSelfDefending vengono adattate di conseguenza. Richiede l'offuscamento VM (o Parse HTML) e l'offuscatore v6.9.0+.
  • bytenode - per il codice che verrà compilato in .jsc con 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.