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

  • Автор темы Автор темы rownong
  • Дата начала Дата начала

rownong

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

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

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

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

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

Да и... нужна ли кому ваша великая приложения, чтобы так заморачиваться?
 
  • Like
Реакции: pr1
Тут имеет смысл рассуждать не о принципиальной возможности (принципиальной возможности, очевидно, нет), а о затратах, которые понесет желающий доработать твою программу.

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

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

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

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

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