Как безопасно скомпилировать и скрыть код Clojure? - PullRequest
0 голосов
/ 17 февраля 2020

Есть ли способ безопасной доставки написанного кода Clojure без (или минимизации) риска его декомпиляции и доступа?

Являются ли файлы JAR, созданные с помощью uberjar, достаточно безопасными для передачи?

Спасибо, куча!

1 Ответ

1 голос
/ 17 февраля 2020

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

Можно создать файлы JAR, содержащие исходный код Clojure, который можно развернуть, используя компилятор Clojure на компьютере, на котором развернут JAR, для компиляции исходного кода Clojure в байт-код JVM вскоре после процесса JVM начинается. Вы можете выполнить 'unzip -v foo.jar' для файла JAR, чтобы увидеть список имен файлов внутри него, а также любой файл с суффиксом имени файла, например '.clj', '.cl js' или ' .clj c ', скорее всего, исходный код Clojure.

Если в файлах JAR имена файлов заканчиваются на .class, то это файлы класса Java, содержащие байт-код JVM. Вы можете запустить декомпилятор для большинства таких файлов и часто получать синтаксически верный исходный код Java, который ведет себя так же, как и исходный код Clojure. например, см. https://github.com/clojure-goes-fast/clj-java-decompiler или выполните поиск в Google по запросу "java декомпилятор" для многих других подобных инструментов.

Если вы ищете такие термины, как "java запутывание байт-кода", вы возможно, найдут инструменты, которые утверждают, что предоставляют некоторый уровень шифрования имен и / или функциональности байтового кода JVM. Я не знаю, насколько они эффективны.

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

...