Dokumentacja
/

Browser Environment

Browser Environment

Pro
v7.9.0+

Zadeklaruj, jak serwowana jest produkcyjna kompilacja, aby chroniony kod mógł związać z nią swoją integralność.

Opcja browserEnvironment deklaruje fakty o środowisku, w którym serwowana jest produkcyjna kompilacja, dzięki czemu chroniony kod może się z nimi związać lub na nie reagować. To niewielki obiekt, a każde pole działa wyłącznie razem z jedną konkretną ochroną - sama z siebie opcja nic nie robi:

JavaScript

transport

Schemat, przez który produkcja serwuje bundle - 'http' lub 'https'. Działa razem z vmSelfDefending.

Przy 'https' kopia, którą inżynier wsteczny serwuje przez zwykłe HTTP, nie zadziała poprawnie. 'http' lub nieustawione pole nie dodaje takiej ochrony.

Kompilacja zadeklarowana jako transport: 'https' działa poprawnie wyłącznie tam, gdzie faktycznie jest serwowana przez https:. Każdy inny schemat ją psuje, dlatego deklaruj to tylko wtedy, gdy każdy kontekst ładujący produkcyjną kompilację używa HTTPS. Wyklucza to:

  • zwykłe http://, w tym http://localhost podczas developmentu;
  • file:// - Electron, Cordova i inne spakowane aplikacje;
  • osadzenia blob: i about: - bundle działający w ramce about:blank lub srcdoc.

Przekierowanie HTTP→HTTPS po stronie klienta i tak najpierw renderuje stronę HTTP, więc bundle nie może uruchomić się przed zakończeniem przekierowania.

hosting

Skąd serwowany jest produkcyjny bundle - 'remote' lub 'local'. Działa razem z vmDebugProtection i wyłącznie dla targetów browser oraz browser-no-eval. Wymaga obfuskatora w wersji 7.14.0 lub nowszej.

Przy 'remote' kopia, którą inżynier wsteczny wyciągnie i uruchomi we własnym lokalnym środowisku, jest traktowana jako niezgodność środowiska uruchomieniowego, a zabezpieczenia przed automatyzacją reagują zgodnie z konfiguracją vmDefenseReaction. 'local' lub nieustawione pole nie dodaje takiej ochrony.

Kompilacja zadeklarowana z hosting: 'remote' działa poprawnie tylko wtedy, gdy jest ładowana ze zdalnego hosta. Bundle otwarty z lokalnego środowiska - localhost, serwera deweloperskiego, file:// - jest celowo traktowany jako niezgodność, dlatego deklaruj to wyłącznie wtedy, gdy każdy kontekst ładujący produkcyjną kompilację jest serwowany zdalnie, i nie dodawaj tego do kompilacji używanych do lokalnego rozwoju, testów i CI.

hookedBuiltins

Ustaw na true, aby zadeklarować, że środowisko uruchomieniowe, w którym działa Twój build produkcyjny, legalnie podmienia natywne wbudowane funkcje na wrappery JavaScript - własny mechanizm anti-tamper aplikacji, strona hosta lub inne rozszerzenia przeglądarki współdzielące ten sam realm. Działa razem z vmSelfDefending. Wymaga obfuskatora w wersji 7.15.0 lub nowszej.

Zwykle Self Defending traktuje podmienioną natywną funkcję wbudowaną jako manipulację i nie pozwala buildowi działać. Przy hookedBuiltins: true toleruje takie środowisko, a chroniony kod nadal działa. false lub nieustawione pole zachowuje ścisłe zachowanie.

JavaScript

hookedBuiltins celowo osłabia wykrywanie manipulacji: po jego ustawieniu analityk, który obłoży te same funkcje wbudowane hookami, aby przyjrzeć się Twojemu kodowi, również nie zostanie zatrzymany. Wirtualizacja VM, ochrona przed debugowaniem i kontrole integralności pozostają nienaruszone. Włączaj go tylko wtedy, gdy wiadomo, że Twoje środowisko produkcyjne hookuje funkcje wbudowane, a ta słabsza gwarancja jest akceptowalna.

Obsługiwane targety

browserEnvironment dotyczy wyłącznie targetów browser, browser-no-eval i service-worker. Dla node, userscript i bytenode opcja jest odrzucana - obfuskacja kończy się błędem walidacji, zamiast po cichu porzucić ustawienie. hosting jest jeszcze węższe: na service workerze jest akceptowane, ale niczego tam nie wiąże.

W panelu elementy Transport, Hosting i Hooked Builtins znajdują się w sekcji Advanced Protection. Każdy z nich staje się edytowalny dopiero po włączeniu sparowanej z nim ochrony - VM Self Defending dla Transport i Hooked Builtins, VM Debug Protection dla Hosting - i gdy target go obsługuje.

Wymagania

  • transport i hookedBuiltins działają razem z vmSelfDefending, a hosting z vmDebugProtection; w przeciwnym razie żadne z nich nic nie robi.
  • Target browser, browser-no-eval lub service-worker (browser lub browser-no-eval dla hosting).
  • Obfuskator w wersji 7.9.0 lub nowszej dla transport, 7.14.0 lub nowszej dla hosting, 7.15.0 lub nowszej dla hookedBuiltins.

Przykład

JavaScript