Защита кода ElectronJS 2018

Я собираюсь начать процесс создания служебного приложения на базе Windows для управления локализованным сервером ExpressJS, которое будет использовать графическое приложение на базе Windows для управления некоторыми функциями этой службы.

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

Любой совет будет принят с благодарностью большое спасибо


person jremi    schedule 26.04.2018    source источник
comment
Извините за опечатки, я с телефона   -  person jremi    schedule 26.04.2018
comment
должно быть обманом stackoverflow.com/questions/39233588/. 2018 много чего не меняет. Как только вы отправляете код в клиент, он читается независимо от того, что вы делаете.   -  person OJ Kwon    schedule 26.04.2018
comment
Я дал вам аванс для людей, которые будут приземляться здесь через Google. Но в целом такие вопросы лучше задавать на электронных форумах и в слабых каналах. Файлы справки в stackoverflow дают вам представление о том, почему;) stackoverflow.com/help/how-to-ask   -  person Hans Koch    schedule 26.04.2018


Ответы (1)


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. Это просто еще один уровень защиты, чтобы усложнить задачу.

person Hans Koch    schedule 26.04.2018
comment
Привет Ганс, большое спасибо за этот пост. Я ценю разъяснения. Мне также очень понравилось видео YouTube, которое вы прислали. Очень приятно видеть, как он спустился на уровень Chromium, чтобы посмотреть на реальные события DOM, которые взаимодействовали с движком js. - person jremi; 26.04.2018
comment
@hans Koch Итак, я думаю, отправка исходных карт в производство была бы контрпродуктивной, верно? - person Kev; 22.08.2018
comment
@Amida, только если вы хотите защитить сценарии. Но лично я бы не стал включать исходные карты в любой продукт, предназначенный для производства, ни в браузере, ни в электронном виде. - person Hans Koch; 23.08.2018