Я собираюсь начать процесс создания служебного приложения на базе Windows для управления локализованным сервером ExpressJS, которое будет использовать графическое приложение на базе Windows для управления некоторыми функциями этой службы.
однако, прежде чем я начну, я хотел бы поговорить с сообществом, чтобы попытаться получить совет. Совет о том, как правильно защитить код, поскольку все это будет пчелами Node JS. Мне нужно убедиться, что он защищен, и некоторые из моих первоначальных чтений в Интернете покажите, что использование электрона не является самым лучшим. Safeway увидел, что, как вы, ребята, справляетесь с этим, чтобы защитить Node JS, этот код защищен с помощью электрона, и в моем случае в среде Windows
Любой совет будет принят с благодарностью большое спасибо
Ответ 1 · рейтинг 27 · Hans Koch
tl;dr Вы можете, и это не стоит усилий. Просто упакуйте исходный код в файл asar, это убережет от него большинство людей.
Длинный ответ:
- Используйте параметр
asar при создании приложения.
- Обфусцируйте код с помощью uglifier.
- Используйте ВАСМ
- Language bindings to grab your data from a compiled format
- neonjs for Rust
- Edge-js для С#
- N-API, NAN для C/C++
В противном случае ваши файлы являются скриптами, все эти действия только замедлят атакующего (тактика многих защит), но не помешают ему получить к ним доступ. DevTools довольно легко открыть, и люди смогут прочитать код в той или иной форме, в той или иной форме. А если кто-то получит ваш обфусцированный код, то легко реконструировать происходящее (см. здесь для справки: https://www.youtube.com/watch?v=y6Uzinz3DRU)
Если вы хотите защитить себя от манипулирования кодом, есть лучшие способы сделать это, такие как хэширование, изоляция контекста и т. д. У Electron есть целая глава по этому вопросу.
https://github.com/electron/electron/blob/master/docs/tutorial/security.md
Небольшое обновление (2020 г.):
Я видел эту библиотеку несколько недель назад и подумал, что она покажет хороший способ еще больше запутать код от чтения внешними сторонами.
https://github.com/OsamaAbbas/bytenode
Основная идея состоит в том, чтобы скомпилировать JS в байт-код для V8. Это очень хорошо работает для Electron и определенно является препятствием, которое не каждый преодолеет. Но это не защитит ваш код от превращения обратно в удобочитаемый JS. Это просто еще один уровень защиты, чтобы усложнить задачу.