VM Debug Protection
Смотреть
Obfuscator.io Advanced Defenses: Self-Defending, Debug Protection, Domain Lock
Опция vmDebugProtection добавляет в среду выполнения VM меры противодействия отладке, что значительно затрудняет реверс-инжиниринг защищённого кода. Реакция на каждое срабатывание задаётся категориями debugger, automation и sandbox опции vmDefenseReaction.
Если browserEnvironment.hosting имеет значение 'remote' (v7.14.1+), Debug Protection также привязывает сборку к тому, что она отдаётся с удалённого хоста: копия, отдаваемая с локального хоста разработки, считается несоответствием среды выполнения, и срабатывают защиты от автоматизации.
Эти защиты действуют и против ваших собственных агентов, средств автоматизации и отладчиков. Они могут остановить выполнение, выбросить посторонние ошибки или выдать неверные результаты. Для функциональных тестов используйте отдельную тестовую сборку; в разделе Тестирование и CI показано, какие опции в ней переопределяются.
Обнаружение инспектора
Начиная с обфускатора 8.0.0, vmDebugProtection принимает не только логическое значение, но и объект. Объект оставляет Debug Protection включённой, но ослабляет один детектор:
inspectorDetection (по умолчанию включён) обнаруживает подключённый инспектор Chrome DevTools Protocol или активный отладчик и реагирует на них. Открытие инструментов разработчика в браузере подключает такой сеанс, поэтому открытый инспектор обнаруживается и вызывает реакцию. Оставляйте его включённым в продакшене; выключайте, только если ваши пользователи открывают инструменты разработчика по легитимным причинам. В панели управления это вложенный переключатель Inspector Detection под VM Debug Protection (v8.0.0+), который появляется, когда Debug Protection включена.
Фреймворки автоматизации. При включённом inspectorDetection (по умолчанию) управление защищённой страницей через инструмент на основе CDP (Puppeteer, Playwright, Selenium/ChromeDriver) распознаётся как подключённый инспектор. vmDebugProtection: { inspectorDetection: false } отключает только детектор инспектора; детектор автоматизации Debug Protection по-прежнему может реагировать на управляемый браузер. Для сборок автоматических тестов следуйте разделу Тестирование и CI, где отключаются vmDebugProtection и vmSelfDefending.
Content Security Policy
Если ваша Content Security Policy запрещает динамическое выполнение кода (без unsafe-eval), используйте target browser-no-eval и проверьте результат под этой политикой. Этот target использует запасной механизм для проверок, которые иначе опираются на динамическое выполнение. То же относится к браузерным расширениям со строгой CSP: для наилучшей совместимости используйте browser-no-eval.
