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

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

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

Любой совет будет очень признателен, большое спасибо

Извините за опечатки, я пользуюсь телефоном

jremi 26.04.2018 02:42

должен быть обманут stackoverflow.com/questions/39233588/…. 2018 ничего не меняет. После того, как вы отправите код в клиент, его можно будет прочитать независимо от того, что вы делаете.

OJ Kwon 26.04.2018 02:57

Я дал вам маркер для людей, которые будут заходить сюда через Google. Но в целом вопросы такого типа лучше размещать на электронных форумах и на слабом канале. Файлы справки по stackoverflow дают вам представление, почему;) stackoverflow.com/help/how-to-ask

Hans Koch 26.04.2018 14:22
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
18
3
16 771
1

Ответы 1

tl; dr Можно, и это не стоит усилий. Просто упакуйте исходный код в файл asar, он удерживает от него большинство людей.

Длинный ответ:

  • Используйте опцию asar при создании своего приложения.
  • Обфускируйте код с помощью углафикатора.
  • Использовать WASM
  • Привязки к языку для извлечения ваших данных из скомпилированного формата
    • neonjs для Rust
    • edge-js для C#
    • N-API, NAN для C / C++

В противном случае ваши файлы являются сценариями, все эти шаги только замедляют злоумышленника (тактика многих защит), но они не помешают им получить к ним доступ. DevTools довольно легко открыть, и люди смогут читать код каким-либо образом, формой или формой. И если кто-то получит ваш запутанный код, легко восстановить то, что происходит (см. Здесь для справки: https://thewikihow.com/video_y6Uzinz3DRU)

Если вы хотите защитить себя от манипуляций с кодом, есть способы сделать это лучше, например хеширование, изоляция контекста и т. д. В Electron есть целая глава по этому вопросу.

https://github.com/electron/electron/blob/master/docs/tutorial/security.md

Небольшое обновление (2020 г.):

Я видел эту библиотеку несколько недель назад и подумал, что она покажет хороший способ еще больше запутать код от чтения внешними сторонами.

https://github.com/OsamaAbbas/bytenode

Основная идея - скомпилировать JS в байт-код для V8. Это очень хорошо работает для Electron и определенно является препятствием, которое не все преодолеют. Но, это не защитит ваш код от превращения обратно в читаемый JS. Это просто еще один уровень защиты, который усложняет задачу.

Привет, Ганс, большое спасибо за этот пост. Я ценю разъяснения. Мне также очень понравилось видео с YouTube, которое вы отправили. Очень приятно видеть, как он спустился на уровень Chromium, чтобы посмотреть на фактические события DOM, которые взаимодействуют с движком js.

jremi 26.04.2018 16:29

@hans Koch Так что, я думаю, доставка исходных карт в производство будет контрпродуктивна, верно?

Kev 22.08.2018 15:32

@Amida, только если вы хотите «защитить» скрипты. Но я лично не стал бы включать исходные карты в любой производственный продукт ни в браузере, ни в электронном виде.

Hans Koch 23.08.2018 21:24

Другие вопросы по теме