Browser Environment
Zadeklaruj, jak serwowany jest produkcyjny build, aby chroniony kod mógł związać z nim swoją integralność.
Obejrzyj
Obfuscator.io Advanced Defenses: Self-Defending, Debug Protection, Domain Lock
Opcja browserEnvironment deklaruje fakty o środowisku, w którym serwowany jest produkcyjny build, 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:
transport
Schemat, przez który witryna produkcyjna 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.
Build, który deklaruje transport: 'https', działa poprawnie wyłącznie tam, gdzie faktycznie jest serwowany przez https:. Każdy inny schemat go psuje, dlatego deklaruj to tylko wtedy, gdy każdy kontekst ładujący produkcyjny build używa HTTPS. Wyklucza to:
- zwykłe
http://, w tymhttp://localhostpodczas developmentu; file://- Electron, Cordova i inne spakowane aplikacje;- osadzenia
blob:iabout:- bundle działający w ramceabout:blanklubsrcdoc.
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.1 lub nowszej.
Przy 'remote' kopia serwowana z lokalnego hosta deweloperskiego jest traktowana jako niezgodność środowiska uruchomieniowego, a zabezpieczenia przed automatyzacją reagują zgodnie z konfiguracją vmDefenseReaction (zobacz Telemetria i reakcje zabezpieczeń VM). 'local' lub nieustawione pole nie dodaje takiej ochrony.
Build, który deklaruje hosting: 'remote', działa poprawnie tylko wtedy, gdy jest ładowany ze zdalnego hosta. Bundle otwarty z lokalnego serwera deweloperskiego jest celowo traktowany jako niezgodność, dlatego deklaruj to wyłącznie wtedy, gdy każdy kontekst ładujący produkcyjny build jest serwowany zdalnie, i nie dodawaj tego do buildów 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.
hookedBuiltins celowo osłabia wykrywanie hooków na funkcjach wbudowanych: 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, VM Debug Protection 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 nie ma żadnego efektu. 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 Zaawansowane zabezpieczenia. 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
transportihookedBuiltinsdziałają razem zvmSelfDefending, ahostingzvmDebugProtection; w przeciwnym razie żadne z nich nic nie robi.- Target
browser,browser-no-evallubservice-worker(browserlubbrowser-no-evaldlahosting). - Obfuskator w wersji 7.9.0 lub nowszej dla
transport, 7.14.1 lub nowszej dlahosting, 7.15.0 lub nowszej dlahookedBuiltins.
