Я озадачен просьбой моего менеджера. Я работаю в небольшом стартапе, и мы разработали веб-приложение по фиксированной ставке с соглашением об обслуживании для НАМНОГО более крупной компании. Зная ужасные истории о том, как крупные компании будут оплачивать свои счета только в последнюю секунду, мы решили, что хотели бы защитить себя, имея возможность лицензировать это веб-приложение таким образом, чтобы, если нам не платят, программное обеспечение больше не работает.
Я видел, как это было сделано ранее для настольных приложений, однако это будет веб-приложение, которое будет размещаться внутри и не будет доступно из Интернета.
Каков наилучший подход для этого, мы бы хотели, чтобы он занимал небольшую площадь, и хотели бы иметь возможность продлевать распространенный ими лицензионный ключ.
Кто-нибудь делал что-то подобное? Мы полностью сошли с ума? У кого-нибудь есть лучшие предложения?
источник
Ответы:
Есть много способов реализовать что-то подобное, но вот тот, который не должен быть слишком сложным:
Вам нужен общедоступный веб-сайт, где размещен файл, содержащий хэши лицензионных ключей, которые были в черном списке. Как вы управляете этим файлом, зависит только от вас, но сам файл должен иметь только хэш в каждой строке.
Затем, периодически, ваше программное обеспечение инициирует загрузку этого файла (большинство языков на стороне сервера обеспечивают это), а затем ищет в нем хэш установленного лицензионного ключа. Если он найден, то приложение знает, что оно должно умереть, пока черный список не будет удален.
MD5 или аналогичный плюс секрет должен быть достаточным для этого. Вы можете стать более привлекательным, если бы приложение отправляло запрос на ваш сайт, и вы могли бы найти его в базе данных на лету, но файл (который, я предполагаю, будет коротким списком), надеюсь, останется небольшим и может быть самый простой способ.
Сложнее будет сохранить приложение мертвым. В конце концов, вы должны хранить это где-то внутри, что означает, что если оно слишком очевидно, его можно легко подорвать, и даже если оно не слишком очевидно, его можно легко отменить, восстановив соответствующую таблицу (таблицы) / файл (ы). Поэтому я предлагаю и второй способ защиты.
Этот метод будет хранить «LIVE» или «DEAD» (или что-то достаточно похожее) в таблице или файле, но снова HASHed. Это должно быть хешировано с вашей солью и отметкой времени. Каждый раз, когда страница вашего приложения запускается, проверяйте это значение с помощью хэшированной версии «LIVE» + соль + временная метка, а затем разрешите допустимый диапазон временных отметок (например, один день, два дня, одна неделя, один месяц и т. Д.). Имейте в виду, что чем больше диапазон, тем тяжелее будет результативность.). Пока все совпадает (или найдено совпадение), приложение остается живым; в противном случае, даже если значение в специальном файле или таблице равно «LIVE», оно все равно будет мертвым, если будет предпринята попытка восстановления из резервной копии, поскольку отметка времени выйдет за пределы вашего порогового значения.
В итоге (это предполагает, что у вас есть какой-то программный метод проверки действительности лицензионного ключа, такой как какая-то контрольная сумма или другой метод):
Теперь, боже мой, есть миллион и один способ, которым это может потерпеть неудачу. Рассмотрите все возможные способы и создайте надежную систему (включая ту, которая предполагает, что клиент прав, если файл черного списка не может быть загружен). Протестируйте, протестируйте, протестируйте его, а затем протестируйте еще несколько перед развертыванием, потому что, если это пойдет не так, вы потеряете доверие своего клиента.
источник
license-server.example.com: no route to host
что теперь? Сервер лицензий может даже не существовать когда-нибудь в будущем - и не говорите мне, что ваша компания будет еще жива через двадцать лет, что статистически невероятно.Другие ответы уже сделали хорошую работу по освещению технической стороны. Но, пожалуйста, также рассмотрите юридическую сторону.
Есть ли у вас право заблокировать их приложение, если они не платят? Если вы не упомянули об этом заранее в договоре, вы можете не иметь права сделать это, даже если платежи истекут (например, вы не обязательно имеете право забрать то, что продали). Кроме того, во многих странах действуют специальные законы, запрещающие «манипулирование компьютерными программами» - то, что вы делаете, может рассматриваться как таковое и даже может привести к уголовной ответственности.
Поэтому я бы посоветовал сначала обсудить это с юристом, чтобы не попасть в горячую воду.
В конце концов, может быть, лучше просто положиться на правовую систему. Если они не платят, ведут переговоры, и если это не помогает, просто подайте в суд. Во многих странах судебный процесс является относительно безболезненным и дешевым, если ситуация с контрактом ясна (в Германии, например, вы можете получить Mahbbescheid менее чем за 20 €).
источник
Если они размещаются внутри, как это может отличаться от любого другого программного обеспечения, которое вы можете отправить? Выясните, что бы вы сделали, если бы отправляли, скажем, приложение для отображения инвентаря на рабочем столе, и сделайте это.
источник
Это зависит от системы. Вы расширили существующий фреймворк, такой как Magneto, или написали целое приложение с нуля? Если это позже, встроить требование лицензирования не слишком сложно. Вы просто доставляете приложение с краткосрочной лицензией, срок действия которой истекает через 45 дней после выставления счета, а затем выдает постоянную лицензию.
Это предполагает, что вы не переворачиваете источник. :)
источник
Принимая во внимание, что система размещена внутри, многие из упомянутых выше решений, включающих связь с удаленным сервером, могут не работать.
Почему бы вместо этого не включить файл лицензии в проект, который включает дату истечения срока действия. Как только системные часы превышают срок действия, система перестает функционировать. Чтобы обезопасить файл, зашифруйте его содержимое, чтобы предотвратить подделку. Когда пользователь платит или продлевает его на дополнительный год, вы отправляете ему новый файл лицензии.
Обратите внимание, что если вы используете PHP, код легко доступен для редактирования пользователем, поэтому независимо от того, какую защиту вы установите, пользователь может легко войти и удалить его. Если вы используете ASP.NET или какой-либо другой скомпилированный язык, это не проблема, так как код не может быть изменен.
источник
(Раскрытие - я работаю на Agilis Software, поставщика систем управления лицензиями ).
Наиболее эффективным решением является использование автоматической активации продукта с арендой лицензии. Из коробки это позволяет вам:
источник