История создания системы лицензирования

Программисты, разработавшие инновационное программное обеспечение с помощью Node.JS, хотят защитить свое программное обеспечение. Они вложили бесчисленное количество часов и ресурсов в создание действительно уникального и ценного продукта. Однако вскоре они поняли, что их тяжелая работа может быть легко украдена или скопирована другими, если они не примут надлежащих мер для ее защиты.

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

Основная проблема программного обеспечения Node.JS

Основная проблема, с которой столкнулись программисты, заключалась в защите системы лицензирования их программного обеспечения. Они разработали специальную систему лицензирования, которая позволила бы им монетизировать свой продукт, но им было сложно сделать ее достаточно безопасной для предотвращения пиратства или несанкционированного использования.

Причина этой трудности заключалась в том, что Node.JS является платформой с открытым исходным кодом, и любой может легко получить доступ к ее коду и изменить его. Даже если вы используете инструмент JavaScript Obfuscator, вы все равно не сможете избежать редактирования исходного кода пользователями. Из-за этого программистам было сложно создать систему лицензирования, которую нельзя было бы легко взломать или обойти.

Докер — это контейнер, а не щит

Docker — популярная платформа для создания и развертывания приложений, но она не может защитить исходный код программного обеспечения Node.js. Причина этого в том, что Docker предназначен для контейнеризации и упаковки приложения, что упрощает его развертывание и управление. Однако он не предоставляет каких-либо конкретных механизмов защиты кода внутри контейнера.

В контейнере Docker код приложения Node.js и все его зависимости объединены в единый образ. Этот образ можно легко опубликовать и развернуть в любой системе, поддерживающей Docker. Однако после развертывания образа любой, у кого есть доступ к контейнеру, потенциально может получить доступ и изменить код внутри.

Когда контейнер Docker запущен, пользователи могут просто использовать «docker exec -it [container] sh» для доступа к интерфейсу командной строки внутри контейнера Docker. Пользователи также могут копировать файлы на свои локальные рабочие станции для обратного проектирования. Вот почему докер не предназначен для защиты вашего программного обеспечения.

Какой механизм мы используем?

В нашей модели основные сценарии, которые должны выполняться сервером приложений Node.JS, хранятся внутри сервера лицензий Node.JS, а это означает, что при запуске приложения Node.JS оно запрашивает сценарий с сервера лицензий с помощью запроса GET и eval. ответ кода сервером лицензий. Логика лицензирования, механизм синхронизации системного времени хранятся внутри сервера лицензий, а сам сервер лицензий поставляется вместе с pkg. (Мы знаем, что иногда сложно упаковать все приложение Node.JS из-за некоторых проблем с зависимостями.)

Как выглядят файлы?

Вот пример помещения стартового файла JavaScript в систему лицензирования. С помощью JavaScript Obfuscator файл точки входа (index.js) выглядит так.

Вам, как пользователю, как взломать этот софт?