LINUX.ORG.RU

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

 ,


2

2

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

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

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

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

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

Лицензионный договор.

no-such-file ★★★★★
()

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

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

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

Radjah ★★★★★
()

Ты только не повторяй путь starforce, которые готовы были даже портить железо.

Aswed ★★★★★
()

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

u0atgKIRznY5
()

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

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

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

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

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

https://github.com/giampaolo/psutil

NetSurf
() автор топика

соберет необходимые данные с сервера

И окажется, что это самый дефолтный конфиг виртуалки с айпишником вроде 192.168.0.100
:)

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

Окажется, что «лицензия» отваливается от каждого чиха.

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

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

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

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

Или самый гарантированный способ , это держать часть приложения у себя на сервере и делать провеку по ключу?

NetSurf
() автор топика

Часовой рядом с сервером.

ashot ★★★★
()

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

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

Ты как делаешь свои коммерческие прожки на питоне? Или в виде фриланса работаешь аля сделал отдал и забыл?

NetSurf
() автор топика

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

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

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

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

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

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

u0atgKIRznY5
()

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

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

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

Приложка, покупашка.... Мозг скукожился, пока дочитал.

Бумажки надёжнее технических средств. или хардварный ключ.

PunkoIvan ★★★★
()

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

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

legolegs ★★★★★
()

s/безопасность/огораживание

Не надо лицемерить.

hobbit ★★★★★
()

OMG, каминг-аут в прямом эфире!

anonymous
()

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

bvn13 ★★★★★
()

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

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

Deleted
()

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

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

Хости бэкенд на своих серверах

А вообще с принципами свободы как то не вяжется.

nihirash ★★★
()

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

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

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

NetSurf
() автор топика

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

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

Но ведь тогда удалённая сторона сможет дизассемблировать библиотеку и получить в своё распоряжение ноухау топик-стартера!

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

Для этого прийдется еще сниффать сеть и так далее и тому подобное. А если сделать lazy loading то ну его нафиг.

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

И это правильно, держать часть у себя. А у клиента обмылок с коннектом к тебе. по другомУ, если надо, всё равно сопрут.

Deleted
()

Залей свое приложение в EC2 и продавай подписку

annulen ★★★★★
()

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

spijet ★★★
()

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

anonymous
()

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

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

KivApple ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.