Обфускация Javascript на ходу на PHP на русском
Обфускация Javascript на ходу на PHP на русском
Итак, у меня была довольно специфическая структура проекта, JS-код
генерировался на ходу с помощью PHP
. Нужно было обфусцировать код, но оставить возможность добавлять некоторые данные на ходу на PHP.
Сейчас расскажу как я решил эту проблему.
TL;DR:
Я локально переобфусцирую код и кладу его в соседнюю папку после изменений.
Во-первых, я подключил Webpack. Части, которые раньше вставлялись на PHP
теперь подключаются с помощью require
. Так же это позитивно сказалось на структуре кода проекта.
Я подключил Webpack-плагин для известного обфускатора javascript-obfuscator.
Динамичные данные, которые должны вставлятся с помощью PHP, я вставляю в виде переменных типа __$$CONFIG$$__
и __$$IS_DEV$$__
, которые с помощью PHP заменялись на ходу на JSON-массив или код. Таким же образом заменялись некоторые данные в строковых литералах. Эти строки и идентификаторы я добавил в список исключений, чтоб обфускатор их не переименовал.
После изменений я делаю npm build
и потом делаю коммит, в котором в одной папке изменения в исходниках, а в другой – в обфусцированной сборке. А потом cron-скрипт подтягивает обновление из GitHub на хостинг.