Zgodność środowiska
Wybierz target dla rzeczywistego środowiska. Buildy Browser i Node mogą zawierać różne zabezpieczenia; target Browser nie zastępuje Node.
target
browser- Chrome, Firefox, Safari, Edge.browser-no-eval- tak jakbrowser, ale wynik nie używaeval(). Stosuj, gdy strona docelowa ma Content Security Policy zabraniającąeval/unsafe-eval.node- środowisko Node.js. Opcje specyficzne dla przeglądarki są wyłączone (wymagająwindow/documenti w Node nie robiłyby nic albo zgłaszałyby wyjątek). Niektóre zabezpieczeniavmSelfDefending, które opierają się na API dostępnych tylko w przeglądarce, czyli wykrywanie przeglądarki headless, odzyskiwanie czystego realmu przez iframe oraz kontrole przeciwko inspektorowi i DOM, nie są generowane dla tego targetu.service-worker- kontekst Service Workera. Brakwindowidocument, inny obiekt globalnyself.userscript- piaskownica menedżera userscriptów (np. Tampermonkey). ZabezpieczeniavmSelfDefendingsą odpowiednio dostosowane. Wymaga obfuskacji VM (lub Parse HTML) oraz obfuskatora w wersji v6.9.0+.bytenode- dla kodu, który zostanie skompilowany do.jscza pomocą bytenode. Wymaga obfuskacji VM (lub Parse HTML) oraz obfuskatora w wersji v6.13.0+.
Środowisko przeglądarki i domeny
Deklaracje dotyczące miejsca uruchamiania kodu muszą odpowiadać rzeczywistemu wdrożeniu. browserEnvironment musi opisywać, jak build jest faktycznie serwowany (zobacz Browser Environment), a VM Domain Lock musi zawierać wszystkie domeny, które go serwują (zobacz VM Domain Lock). Automatyzacja i debuggery mogą uruchamiać zaawansowane zabezpieczenia; zobacz Testy i CI.
JavaScript
Nazwy funkcji i ich tekst źródłowy mogą się zmienić w wyniku obfuskacji. Nie używaj .name ani .toString() jako stabilnych danych aplikacji; zamiast tego stosuj jawne identyfikatory. Publiczne zmienne globalne mogą pozostać widoczne, jeśli wymagają tego Twoje ustawienia.
strictMode
strictMode: null i strictMode: false nadal rozpoznają jawne dyrektywy, moduły ES i metody klas jako kod w trybie strict. strictMode: true traktuje całe wejście jako kod w trybie strict. Dopasuj ustawienie do końcowego kontekstu wykonania; bundler dodający tryb strict po obfuskacji może zmienić zachowanie kodu.
Pipeline builda
Skompiluj TypeScript lub JSX i zbuduj bundle aplikacji przed końcowym krokiem obfuskacji. Zachowaj komentarze /* javascript-obfuscator:vm */ w trakcie tego builda, aby tryb komentarzy nadal mógł je znaleźć. Nie minifikuj, nie formatuj ani w żaden inny sposób nie przepisuj później wyniku chronionego przez Self Defending lub VM Self Defending. Mapy źródeł nie są dostępne dla obfuskacji VM i HTML.
