Документация
/
Рецепты
/

Лучшие практики

Лучшие практики

Как эффективно применять обфускацию: что защищать, что оставить как есть и чего обфускация сделать за вас не может.

Рекомендации

  • Обфусцируйте только собственный код.

    Не применяйте VM-обфускацию к сторонним скриптам, библиотекам и полифилам. Они уже минифицированы, и обфускация лишь замедлит их.

  • Используйте режим комментариев для точечной защиты.

    Установите vmTargetFunctionsMode в 'comment' и отметьте только чувствительные функции комментарием /* javascript-obfuscator:vm */, вместо того чтобы защищать всё подряд. См. Выбор конкретных функций.

  • Тщательно тестируйте код после обфускации.

    Всегда проверяйте обфусцированный код в целевой среде. Некоторые опции могут незаметно ломать код. Защиты времени выполнения также реагируют на средства автоматизации тестов и отладчики; см. Тестирование и CI.

  • Исключайте часто выполняемые участки из VM-обфускации.

    Используйте vmExcludeFunctions для циклов анимации, рендеринга в реальном времени и часто вызываемого кода. Опция сопоставляет только имена функций корневого уровня (при Async Executor - самые внешние async-функции); чтобы вывести из VM вложенный часто выполняемый код, используйте режим комментариев и отмечайте только те функции, которым нужна защита.

Важное замечание о безопасности

Никогда не храните API-ключи, секреты и учётные данные во фронтенд-коде на JavaScript - даже с обфускацией.

Обфускация увеличивает усилия, необходимые для понимания и изменения кода, но это не шифрование, и она не может гарантировать, что реверс-инжиниринг невозможен. Среда выполнения остаётся наблюдаемой в окружении, которое контролирует злоумышленник, поэтому настойчивый злоумышленник всегда может извлечь данные из клиентского кода. Храните секреты и принимайте решения, от которых зависит безопасность, на сервере.

На практике:

  • Храните секреты на своём бэкенд-сервере
  • Используйте переменные окружения на стороне сервера
  • Проксируйте вызовы API через свой бэкенд, чтобы скрыть ключи
  • Используйте короткоживущие токены, выдаваемые вашим сервером

Что стоит защищать?

VM-обфускация идеально подходит для:

  • Проприетарных алгоритмов и бизнес-логики
  • Кода проверки лицензий (проверки на стороне клиента)
  • Защиты от модификации и проверок целостности
  • Игровой логики и античит-механизмов
  • Реализации премиум-функций
  • Логики расчёта цен

Сборка и релиз

Обфусцируйте скомпилированный и собранный в бандл результат последним шагом сборки; порядок сборки описан в разделе Совместимость со средой. Измерьте накладные расходы выбранного пресета на своём коде, как описано в разделе Выбор пресета. Запускайте функциональные тесты на тестовой сборке, а затем проверяйте отдельный релизный артефакт, который вы действительно выпускаете, как описано в разделе Тестирование и CI.