Вопросы по обфускации JS-приложения

rownong

Новичок
Для нашей организации создают приложение на JS-приложения (шаблон создания интерактивных отчетов - дашбордов).
В него вложено уже много времени и денег на разработку.
Хотелось бы защитить его от копирования.
Вопросы:

1) В отличии от PHP, JS код можно просматривать в браузере. Правильно я понимаю, что перед выкладыванием JS-приложения (на веб-странице), нужно его код (скомпилированную версию) предварительно обфуцировать?
Это защит от копирования со стороны пользователей?

2) Само JS приложение на фреймворке Vue.js
Разработка ведется его нескомпилированной версии.
На веб-странице размещается его скомпилированная версия.
Т.е. если я будут передавать приложение доработку программистам-фрилансерам скомпилированную версию, то они будут ограничены в дальнейшей доработке?

3) Есть меры защиты приложения, чтобы не могли копировать даже скомпилированную версию?
Например, какой-то ключевой функционал в скомпилированной версии обфуцировать, а из него для запуска обращение к серверу, который содержит ключ для этой версии приложения?
Как вообще делают защиту приложений, какие бывают варианты?

4) Если ли методы защиты от копирования, если я другому программисту будут передавать исходники нескомпилировнной версии Vue.js, чтобы тоже нельзя было скопировать?
 

Adelf

Administrator
Команда форума
Ну справедливости ради надо сказать что обфусцированная версия сильно усложнит доработку. все имена переменных и функций превратятся в кашу.

Да и... нужна ли кому ваша великая приложения, чтобы так заморачиваться?
 
  • Like
Реакции: pr1

fixxxer

К.О.
Партнер клуба
Тут имеет смысл рассуждать не о принципиальной возможности (принципиальной возможности, очевидно, нет), а о затратах, которые понесет желающий доработать твою программу.

Если javascript пишется на современных технологиях, со всеми тайпскриптами и вебпаками, то скомпилированный стандартными средствами минифицированный результат уже достаточно неудобен для доработки. Одно дело - отреверсить с целью понять алгоритм работы или спереть "как есть", поменяв пару констант типа урла сервера - это всегда возможно. А вот дорабатывать такое довольно затруднительно, при существенном объеме кода проще и дешевле заново написать (попробуй доработать скомпилированный в es5 async/await, хаха).

Еще вопрос в цели. Конечному пользователю проще сказать - вот вставляй такой вот тег script, загружай приложение с моего cdn-а и пользуйся публичным api. Если это библиотека - ну, вон, некоторые размещают прямо в npm обфусцированный код, отреверсить мне это не помешало, впрочем, я и конкурировать с ними не собирался, мне просто нужен был нормальный пример использования не особо документированного api из опенсорсной части, совсем для других целей. :)

Если речь о разработчиках, которым не доверяешь, ну, да, при нормально выстроенной модульной архитектуре можно дать им обфусцированные библиотеки и приложить к этому документацию по api или typescript/flow-интерфейсы, только я очень сомневаюсь, что потери от неудобства разработки (невозможность посмотреть в исходники, невозможность нормально дебажить -> неизбежный рост сроков разработки) будут хоть чем-то компенсированы (вряд ли разработчики решат заняться бизнесом, если бы хотели, давно бы так и сделали).

И еще, раз это чисто фронтенд, то вы что с этим делаете, продаете библиотеку? Ну, если вы так загнули цену, что отреверсить минифицированный код дешевле, то надо наверное цену снизить.

А если это просто ваша внутренняя библиотека, которая явно нужна кому-то еще, и которую вам жалко, что сопрут - наверное, надо начать ее продавать за вменяемую цену (заодно и узнаете, действительно ли она кому-то нужна), а если не хочется этим заниматься, то просто забить, какая тогда разница :)
 
Последнее редактирование:

Vladson

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