Как выполнить обфускацию исходного кода и защитить источник в электронном js - PullRequest
1 голос
/ 25 сентября 2019

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

Я имею в виду, что обратный инжиниринг кода возможен, даже если приложение создано для производства.Мое приложение содержит много важной информации, такой как GitHub Private Token для автообновления и многое другое.

Я только что прочитал много SO сообщений, но не нашел идеального ответа, поэтому решил проблему.Обфускация кода javascript или защита исходного кода невозможна с электроном?Однако, Obfuscation не защищает код полностью, но может усложнить реверс-инжинирингесли есть обходной путь для этого, дайте мне знать.Я не нашел больше, чем tl;dr на электронном посту, связанном с безопасностью.

Я нашел способ запутывания с помощью obfuscator , но, похоже, ему понадобится запутывание вручную и ничего особенного в защите исходного кода, как в NW.js Есть ли лучший способ добиться этого?

Я нашел что-то полезное для запутывания на Средний пост .но ничего не нашел о защите источника.

Ответы [ 2 ]

1 голос
/ 26 сентября 2019

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

Long awnser:

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

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

Если вы хотите защитить себя от манипулирования кодом, есть более эффективные способы сделать это. Например, Hashing, Изоляция контекста и т. Д. Электрон имеет целую главу по этому вопросу.

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

0 голосов
/ 26 сентября 2019

Obfuscation не является ответом на ваш вопрос и не может решить вашу проблему.Вы можете сделать код сложным с помощью Obfuscation и сделать его трудным для обратного проектирования, но ваш код все еще уязвим, если он содержит такой важный токен (то есть токен github).Есть способ обеспечить эти детали точно.Вам нужен собственный модуль, который может скрыть такие детали.Здесь есть хорошее объяснение нативного модуля здесь .TL; DR, так что вы должны сделать это самостоятельно.Тем не менее, это не кажется мне идеальным, но это может быть выход.

...