Browser Environment
Укажите, по какой схеме отдаётся ваша продакшен-сборка, чтобы защищённый код мог привязать к ней свою целостность.
Смотреть
Obfuscator.io Advanced Defenses: Self-Defending, Debug Protection, Domain Lock
Опция browserEnvironment объявляет факты о среде, в которой отдаётся ваша продакшен-сборка, чтобы защищённый код мог привязать себя к ним или реагировать на них. Это небольшой объект, и каждое его поле действует только вместе с одной конкретной защитой - сама по себе опция ничего не делает:
transport
Схема, по которой ваш продакшен-сайт отдаёт бандл: 'http' или 'https'. Действует вместе с vmSelfDefending.
При 'https' копия, которую реверс-инженер раздаёт по обычному HTTP, не будет работать корректно. 'http' или неустановленное поле такой защиты не добавляет.
Сборка, объявленная с transport: 'https', работает корректно только там, где она действительно отдаётся по https:. Любая другая схема ломает её, поэтому объявляйте это только если каждый контекст, загружающий вашу продакшен-сборку, использует HTTPS. Сюда не входят:
- обычный
http://, включаяhttp://localhostпри разработке; file://- Electron, Cordova и другие упакованные приложения;- встраивания
blob:иabout:- бандл, работающий внутри iframeabout:blankилиsrcdoc.
Клиентский редирект с HTTP на HTTPS всё равно сначала отрисовывает HTTP-страницу, поэтому бандл не должен запускаться до завершения редиректа.
hosting
Откуда отдаётся продакшен-бандл: 'remote' или 'local'. Действует вместе с vmDebugProtection и только для target browser и browser-no-eval. Требует обфускатор версии 7.14.1 или новее.
При 'remote' копия, отдаваемая с локального хоста разработки, считается несоответствием среды выполнения, и защиты от автоматизации реагируют так, как настроено в vmDefenseReaction (см. Телеметрия и реакции защиты VM). 'local' или неустановленное поле не добавляет такой защиты.
Сборка, объявленная с hosting: 'remote', работает корректно только при загрузке с удалённого хоста. Бандл, открытый с локального dev-сервера, намеренно считается несоответствием, поэтому объявляйте это только если каждый контекст, загружающий вашу продакшен-сборку, отдаётся удалённо, и не включайте это в сборки для локальной разработки, тестов и CI.
hookedBuiltins
Установите в true, чтобы объявить, что среда выполнения, в которой работает ваша продакшен-сборка, легитимно подменяет нативные встроенные объекты JavaScript-обёртками - собственная защита приложения от вмешательства, страница-хост или другие браузерные расширения в том же realm. Действует вместе с vmSelfDefending. Требует обфускатор версии 7.15.0 или новее.
Обычно Self Defending считает подменённый нативный встроенный объект вмешательством и не даёт сборке работать. При hookedBuiltins: true он допускает такую среду, и защищённый код продолжает работать. false или неустановленное поле сохраняет строгое поведение.
hookedBuiltins намеренно ослабляет обнаружение хуков встроенных объектов: как только оно установлено, аналитик, оборачивающий те же встроенные объекты для изучения вашего кода, тоже больше не останавливается. VM-виртуализация, VM Debug Protection и проверки целостности не затрагиваются. Включайте его только если известно, что ваша продакшен-среда хукает встроенные объекты, и такая ослабленная гарантия приемлема.
Поддерживаемые значения target
browserEnvironment применяется только к target browser, browser-no-eval и service-worker. Для node, userscript и bytenode она не действует. hosting ещё уже: для service worker оно принимается, но ничего там не привязывает.
В панели управления элементы Transport, Hosting и Hooked Builtins находятся в разделе Продвинутые защиты. Каждый из них становится редактируемым только после включения парной защиты - VM Self Defending для Transport и Hooked Builtins, VM Debug Protection для Hosting - и если target его поддерживает.
Требования
transportиhookedBuiltinsдействуют вместе сvmSelfDefending,hosting- вместе сvmDebugProtection; иначе ни одно из них ничего не делает.- Target
browser,browser-no-evalилиservice-worker(browserилиbrowser-no-evalдляhosting). - Обфускатор версии 7.9.0 или новее для
transport, 7.14.1 или новее дляhosting, 7.15.0 или новее дляhookedBuiltins.
