Dokumentacja
/

Zgodność środowiska

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 jak browser, ale wynik nie używa eval(). 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/document i w Node nie robiłyby nic albo zgłaszałyby wyjątek). Niektóre zabezpieczenia vmSelfDefending, 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. Brak window i document, inny obiekt globalny self.
  • userscript - piaskownica menedżera userscriptów (np. Tampermonkey). Zabezpieczenia vmSelfDefending są odpowiednio dostosowane. Wymaga obfuskacji VM (lub Parse HTML) oraz obfuskatora w wersji v6.9.0+.
  • bytenode - dla kodu, który zostanie skompilowany do .jsc za 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.