LINUX.ORG.RU

Как шмаксимально надежно прибить коммерческое приложение к серверу клиента?

 ,


2

2

Здравствуйте, на связи стартапер, друзья подскажите самые тру методы привязки приложения к определенному серверу, чтобы оно не уплыло в руки другим людям(например клиент поделился им со своим собутыльником, а не дал ему афилиат ссылку, по которой можно приобрести подписку на этот чудо веб товар.

Приложка будет делаться на Python(tornado скорее всего) и потом соберется pyinstallerom в один «бинарник». Все файлы сервиса, будут прогнаны через Cython в *.so библиотеки и будет главный файл main.py , в котором будет только вызываться единственная функция main() .

Итак, у меня такие ноу-хау идеи: Сделать что-то наподобие установщика, который сначала соберет необходимые данные с сервера, на котором будет летать данное приложение(на основе этих данных , делать привязку прожки). Далее эти данные отсылаются на базу, то бишь ко мне на сервер. В файлах приложения, делать необходимые проверки, на основе этих данных и если что-то не сходится , то приложка не будет работать(например на любом другом сервере). Далее эти файлы собираются у меня на сервере с помощью Cython и упаковываются pyinstaller'om вместе с tornado. Библитеки приложения , которые будут обновляться положить рядом. Далее это приложение отправляется покупашке на его сервер. Там автоматически поставить Nginx.

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

привязки приложения к определенному серверу

За такое в приличном обществе морду бьют.

Если твоя программа настолько крута, то воспользуйся ключами типа HASP.

Radjah ★★★★ ()

Плюсую лицензионный договор.

Дополнительно, часть функциальности продаешь как сервис, клиентам выдаешь сертификаты. Смысл ломать, делиться с собутыльником пропадает. Профит.

vvn_black ★★★ ()
Ответ на: комментарий от u0atgKIRznY5

Хорошая идея можно получить ip адресс сервера и где-то в середине Cython библиотеки сделать проверку , а что еще можно взять с сервера , чтобы использовать в привязке?

С помощью этой штуки, можно какую-нибудь полезную инфу достать?

https://github.com/giampaolo/psutil

NetSurf ()
Ответ на: комментарий от NetSurf

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

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

michey ()
Последнее исправление: michey (всего исправлений: 1)

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

menangen ★★★★★ ()

Зависит от того насколько твоя программа должна быть взломоустойчивой. Самый простой способ это сравнивать конфигурацию железа компа. Взывай утилиту dmidecode и анализируй выдачу. Там есть всякие UUID, достаточно для уникальности.

ox55ff ()
Ответ на: комментарий от NetSurf

Я ща под node.js кодю. Прикручиваю к Amazon инфраструктуру клиента. Т.ч. питон пока в заморозке. Оплату по часам получаю, отдал и всё, только по таскам и за отдельную оплату доработки и т.п.

menangen ★★★★★ ()
Ответ на: комментарий от NetSurf

а что еще можно взять с сервера , чтобы использовать в привязке?

Незнаю правильно ли отвечаю на твой вопрос. Я когда покерный клиент делал, на сервере имелась база данных. Клиент когда проходил авторизацию, создавался хеш ключ из пары 'логин+пароль'. В базе данных хранился этот ключ и информация о том что клиент активен. Когда клиент посылал данные, где-то после управляющих команд в запросе находился ключ, который сервер сравнивал с ключом в базе данных, если они одинаковы, то обрабатывал запрос.

u0atgKIRznY5 ()

Приложка _будет_ делаться

т.е. ещё ничего нет, даже прототипа, но уже мысли - как прибить приложение к клиенту? меня терзают смутные догадки, о судьбе вашего стартапа.

vtVitus ★★★★★ ()
Последнее исправление: vtVitus (всего исправлений: 1)

что в этой теме делает тег «безопасность»? Требую убрать и проставить тэги «проприетарщина» и «банальное рабовладение».

По теме: программная защита от копирования противоречит природе вещей, и поэтому всегда работает плохо, а проблем создаёт много. Не трать на это силы.

legolegs ★★★★★ ()

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

bvn13 ★★★★★ ()

соберет необходимые данные с сервера, на котором будет летать данное приложение(на основе этих данных , делать привязку прожки). Далее эти данные отсылаются на базу, то бишь ко мне на сервер

Никто в здравом уме пользоваться этим не будет

linux-org-ru ()

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

system-root ★★ ()
Последнее исправление: system-root (всего исправлений: 1)

Когда-то СДО «Олимпокс» клиенту разворачивали — она привязывалась к DBus machine ID, см. /var/lib/dbus/machine-id или dbus-uuidgen --get. dmidecode на том сервере не работал из-за OpenVZ-виртуализации.

ksa242 ()

Ты немного не тем путем идешь. Для начала сделай рабочий прототип, который можно будет показывать инвесторам/клиентам, а уже потом думай об его огораживании.

gnunixon ★★ ()

Морда с API-ключом на стороне клиента, вся бизнес-логика — на твоём сервере. Ключи прибиваются к IP клиента (на вкус либо видимый в ОС клиента, либо тот, с которого клиент к тебе постучался) и отвязываются тобой по заявке (например, клиент уехал на другой хостинг).

spijet ()

хостить основную часть кода на своём сервере, а на сервере клиента оставлять необходимый минимум кода. ну и связь через РПЦ

anonymous ()

Разместить его на собственном сервере и брать плату за пользование.

А так сломают или зависит сугубо от нужности твоего приложения, а не крутости защиты.

KivApple ★★★★★ ()