Создание системы лицензирования для приложения ColdFusion

Я создаю веб-приложение в ColdFusion 11, которое изначально планировалось размещать в облаке. Однако некоторые потенциальные клиенты предпочли бы, чтобы он размещался на их территории.

Это вызвало вопросы:

  1. Управление приложением на нескольких сайтах (например, обновления, обновления)
  2. Лицензирование приложения таким образом, чтобы оно работало только при оплате клиентом
  3. Предотвращение доступа клиентов к исходному коду и либо нарушения работы приложения, либо его пиратства.

Первое, что я хочу решить, это как создать файл лицензии для каждого клиента, который приложение проверяет каждый раз, когда он используется, а затем разрешает клиенту войти. Имея в виду, что все приложение размещается у клиента, поэтому я не могу иметь центральную систему, которая проверяет лицензирование. Мне нужно что-то вроде того, как работали старые настольные приложения, когда вы вводили серийный номер и лицензировали продукт.

Мои первоначальные мысли:

  1. Предварительно загрузите таблицу базы данных, которая есть у клиента, с хешированными/зашифрованными серийными номерами.
  2. У вас есть другая таблица, которая сопоставляет серийные номера с датами истечения срока действия.
  3. Мое веб-приложение проверяет таблицы баз данных на достоверность серийного номера по сравнению с таблицей базы данных, а затем решает работать в течение любого периода, в течение которого длится серийный номер.

Единственное, как это проверить на "серийную достоверность". То есть, как мое веб-приложение узнает, какой серийный номер использует этот клиент, и сохранит его постоянно до истечения срока действия, который может быть через 12 месяцев.

Может ли кто-нибудь дать мне несколько советов, как добиться такой клиентской безопасности для веб-приложения ColdFusion?


person volume one    schedule 21.07.2014    source источник
comment
Если у них есть код, они могут удалить реализованные вами проверки лицензии. Если у них есть реальный код, вы не можете гарантировать, что они действительный клиент.   -  person Matt Busche    schedule 21.07.2014
comment
Думаю, у них был бы код, но недостаточно опыта, чтобы начать удаление проверок лицензии, а затем отредактировать всю безопасность на основе SESSION, которая будет основана на этом.   -  person volume one    schedule 21.07.2014
comment
Я бы не стал полагаться на то, что они не смогут найти кого-то, кто может снять чеки.   -  person Matt Busche    schedule 21.07.2014
comment
@MattBusche прав, если вы предоставите им доступ к коду, они смогут изменить его, чтобы избежать любых лицензионных ограничений, которые вы там установили. Кстати, какое отношение сеанс пользователя должен иметь к лицензионным ограничениям и DRM? Зачем вам хранить информацию, связанную с этим, в сеансе пользователя??   -  person Sean Coyne    schedule 21.07.2014
comment
Если они собираются разместить его самостоятельно, вы можете отправить им скомпилированный файл JAR, который они разместят на своих серверах. Таким образом, у них нет исходного CFML, а есть только скомпилированный класс. Или вы даете им исходники в виде зашифрованных файлов CFML. Да, есть способы расшифровать эти файлы, но теперь они могут это знать. Если они хотят иметь возможность самостоятельно обновлять код, просто продайте им незашифрованный исходный код за дополнительную плату. Просто убедитесь, что в лицензии сказано, что они не могут перепродавать код, бла-бла-бла, бладда. Все они избегают серийных номеров.   -  person Adrian J. Moreno    schedule 21.07.2014
comment
@Adrian Приложение изначально предоставляется как бесплатная пробная версия, а затем должно работать только с каким-либо серийным номером активации. Я не хочу ситуации, когда они притворяются, что бросили его, но все равно продолжают его использовать.   -  person volume one    schedule 21.07.2014
comment
Тогда вашему приложению потребуется служба проверки, которая своевременно проверяет ваши серверы, а не какую-то локальную базу данных, которую они размещают. Эта служба может установить дату истечения срока действия, напоминание о продлении и сообщить им (через административную область), что есть обновления, которые необходимо применить. BlogCFC делает последнюю часть и она бесплатна. Если в течение определенного времени не проводилась проверка, функциональность приложения ограничена или отсутствует.   -  person Adrian J. Moreno    schedule 21.07.2014
comment
Поэтому, даже если это установка на месте, мне придется уведомить их, что их серверы должны иметь работающее подключение к Интернету за пределами их брандмауэра. Я не знаю, понравится ли им это, потому что приложение будет хранить данные их клиентов, поэтому некоторые из них не хотят облака.   -  person volume one    schedule 21.07.2014
comment
Это 21 век. Скажите им, что если облако является приемлемым решением для NASDAQ, оно приемлемо и для них. nasdaq.com/article/   -  person Adrian J. Moreno    schedule 21.07.2014
comment
Но, но... клиент всегда прав...?   -  person volume one    schedule 22.07.2014
comment
Клиент редко бывает прав, и часть моей работы как консультанта состоит в том, чтобы убедить его в этом. Теперь я не обязательно буду говорить им, что они неправы, скорее, я предоставляю им данные, которые позволят им самим убедиться в том, что они неправы.   -  person Scott Stroz    schedule 22.07.2014


Ответы (1)


Перенесено из комментариев в попытке дать связный ответ.

Если они собираются разместить его самостоятельно, вы можете отправить им скомпилированный файл JAR, который они разместят на своих серверах. Таким образом, у них нет исходного CFML, а есть только скомпилированный класс. Или вы даете им исходники в виде зашифрованных файлов CFML. Да, есть способы расшифровать эти файлы, но теперь они могут это знать. Если они хотят иметь возможность самостоятельно обновлять код, просто продайте им незашифрованный исходный код за дополнительную плату. Просто убедитесь, что в лицензии сказано, что они не могут перепродавать код, бла-бла-бла, бладда. Все они избегают серийных номеров.

@Adrian Приложение изначально предоставляется как бесплатная пробная версия, а затем должно работать только с каким-либо серийным номером активации. Я не хочу ситуации, когда они притворяются, что отказались от него, но все равно продолжают его использовать - том первый

Тогда вашему приложению потребуется служба проверки, которая своевременно проверяет ваши серверы, а не какую-то локальную базу данных, которую они размещают. Эта служба может установить дату истечения срока действия, напоминание о продлении и сообщить им (через административную область), что есть обновления, которые необходимо применить. BlogCFC делает последнюю часть и она бесплатна. Если в течение определенного времени не проводилась проверка, функциональность приложения ограничена или отсутствует.

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

Это 21 век. Сообщите им, является ли облако приемлемым решением для NASDAQ., для них это приемлемое решение.

Но, но... клиент всегда прав...? - том первый

Нет, покупатель иногда живет прошлым и боится настоящего. Gartner рекомендует компаниям приобретать ПО как услугу, а не создавать указанные решения сами по себе. Вы должны показать им, сколько они потратят на предоставление серверов, персонала, времени и т. д. для поддержки вашего программного обеспечения на своих собственных серверах, по сравнению со стоимостью вашего управления им, как предполагалось. Кто в их команде будет исправлять приложение, когда это необходимо? Есть ли у них в штате программисты, которые могут выяснить, почему что-то пошло не так посреди ночи? Будут ли они платить вам дополнительно за то, чтобы вы могли поддерживать копию на своем оборудовании?

Покажите им цифры, покажите им исследования, и вы МОЖЕТЕ заставить их понять и совершить продажу. В противном случае продажа может быть просто нецелесообразной.

person Adrian J. Moreno    schedule 21.07.2014
comment
Я бы увеличил это только для последних 2 абзацев. - person Scott Stroz; 22.07.2014
comment
@Adrian Как насчет идеи иметь зашифрованный файл лицензии с исходными файлами, который сообщает приложению, как долго работать и какие функции включить? Насколько жизнеспособно это звучит? Однако я понятия не имею, как я буду его реализовывать. - person volume one; 24.07.2014
comment
Если вы передадите им исходный код, они смогут запрограммировать ваш файл лицензии. - person Adrian J. Moreno; 24.07.2014