![]() |
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]() ![]() ![]() |
|
Crone |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 19.8.2006 Репутация: нет Всего: 1 |
Это я понял. Но вопрос стоит в другом: пользователь посмотрел, в какой таблице хранятся обновления и написал скриптик, достающий оттуда код. Потом он сделал ещё 1 (2, 3.... 10000) сайтов на системе и исправил код в системе таким образом, чтобы ключ брался из одной базы и ложился после обновления туда же. Т.е. 10000 сатов будут пользоваться одной базой для хранения лицензионного ключа. Значит он всегда будет там самый свежий и любая копия системы сможет запросто обновиться.
|
|||
|
||||
Opik |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Vingrad developer Сообщений: 1918 Регистрация: 6.10.2004 Где: Рига Репутация: 3 Всего: 55 |
Crone,
ИМХО: Исходники кодируешь Зендом (Что бы не могли править исходники, ибо нефиг). Далее при первом запуске системы генерируется ключ, например:
На основе этого ключа вы генерируете серийник и выдаете юзеру. Далее при обновлении смотрите к какому ключу принадлежит серийник, если не совпадает - порите ремнем ![]() Если кто то попробует передать серийник - никаких проблем. Ключи и серийник хранить не в базе, а в пхп файле (Зазенденном ![]() |
|||
|
||||
Crone |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 19.8.2006 Репутация: нет Всего: 1 |
Хм. А есть возможность Зендить файл прямо из PHP? Т.е. чтобы сгенерировать ключ и серийник и зазендить их сразу.
Добавлено @ 15:07 Хотя, врпинципе, это и не нужно - просто файл генерировать вручную и через ту же систему обновлений высылать потом пользователю. |
|||
|
||||
skifoz |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 85 Регистрация: 23.1.2006 Где: Россия Репутация: 1 Всего: 1 |
А почему бы это файл где хранятся твои ключи не передать другому человеку, и не надо будет ничего брать и ключ искать.
|
|||
|
||||
Crone |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 19.8.2006 Репутация: нет Всего: 1 |
Надо обдумать все предложенные варианты. Думаю, что завтра сделаю пост о том, что же я рассчитываю сделать, а вы прокомментируете моё решение.
|
|||
|
||||
Eugene_Bond |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 138 Регистрация: 3.9.2006 Репутация: 1 Всего: 4 |
IonCube гораздо дешевле. + дает возможности как лицензирования, так и шифрования/дешифрования файлов. На западных хостингах IonCube доступен практически везде -- или установлен как расширение пыха или можно загрузить его самому функцией dl() На русских хостингах он менее распространен, но на многих все же доступен одним из способов. Тем более для такого проекта все равно будет (должен) использоваться свой выделенный сервер, следовательно в установке энкодера проблемы не будет. Описание возможностей енкодера тут: Stand Alone ionCube PHP Encoder Логику я представляю себе следующим образом: 1. Клиент получает заенкоденный программный продукт 2. Клиент получает лицензию (привязанную по IP и имени хоста к сайту), причем ограниченную по-сроку например годом 3. В лицензии для каждого клиента хранится переменная с некой хеш-строкой. Эта же строка лежит в базе на сервере. 4. Для запроса на обновление клиент генерирует запрос (например в виде XML) и шифрует его внутренней функцией API енкодера, используя хеш-строку (ключ) из лицензии 5. Сервер "видя" откуда пришел запрос, берет из базы ключ и пытается расшифровать с его помощью этот запрос 6. Если ключи совпали -- значит дешифровка удастся и запрос пришел верный. Можно апдейтить. 7. Если ключи не совпали -- значит кто-то пытается перехетрить систему. Но такого варианта не может быть потому что если ключ на стороне клиента будет браться из лицензии -- его изменить нельзя: нарушится целостность файла лицензии и продукт совсем работать не станет. Саму процедуру апдейта я предлагать не буду -- все от софта зависит. Но ИМХО предложенный мной вариант гарантирует лицензионность обновлений и то, что одна инсталяция системы используется только на одном сайте единовременно. |
|||
|
||||
Crone |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 19.8.2006 Репутация: нет Всего: 1 |
Знаете, что я подумал... Просто сделать интерфейс для обновления на сайте разработчиков. Т.е. создать отдельный раздел и в него давать доступ по лицензионному ключу. Потом пользователь выбирает обновления и система загружает их ему на сайт сама по FTP. Разумеется, там в базе будут хранится данные от хостинга - это будет обязательным условием при покупке системы, чтобы мы могли смотреть, установлена одна или 10 копий системы на сервер и для загрузки обновлений. Как вам идея?
Добавлено @ 22:36 Разумеется, пользователи смогут слить систему по FTP и залить на другой сайт и там установить, но я не думаю, что много кому в голову прийдёт заниматься таким геммороем. |
|||
|
||||
Eugene_Bond |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 138 Регистрация: 3.9.2006 Репутация: 1 Всего: 4 |
Если в таком случае системой можно будет пользоваться "забесплатно" -- прийдет в голову однозначно. Да и код поправить всегда смогут если нужно. |
|||
|
||||
Nicholas_S |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 486 Регистрация: 12.10.2006 Где: Санкт-Петербург Репутация: нет Всего: 19 |
Crone, наиболее надежная из всех предложенных систем выдачи обновлений признаю метод G0rinich. Мы сделали практически аналогичный процесс для обновлений CMS клиентов. Безусловно, база обновлений, хранение ключей и проверка IP адресов и др. данных должны быть расположена на сайте фирмы-разработчика (фирмы-поддержки), даже при условии, что код будет зазенден. Также необходимо, как уже бело подмечено, периодически менять лицензионные ключи, может быть не при каждом получении обновлений, но достаточно часто с определенным периодом.
Если будут какие-то дальнейшие соображения, в том числе реализация определенных моментов процесса обновления - буду рад пообщаться и "махнуться" опытом. ![]() -------------------- ...все в мире относительно |
|||
|
||||
Alex13 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 280 Регистрация: 30.12.2005 Где: Новосибирск Репутация: нет Всего: 1 |
Идея G0rinich'а самая надежная. Только имеет смысл сделать так, чтобы новый ключ содержал инфу о версии загруженного обновления и позволял загрузить только более новую версию
-------------------- Самая страшная ошибка - это ошибка, не имеющая явных причин и конкретных последствий. Антисоциальный блог. |
|||
|
||||
Djinn |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 250 Регистрация: 18.5.2007 Репутация: нет Всего: 1 |
мне тоже так кажется... а если пользователь хочет перенести системы а старую версию не сохранил - запрос в саппорт и ему все с нуля дают и обновления идут также... Зазенденая версия системы проверяет доменное имя на котором висит к примеру... или путь установки и если чтот не так - ошибка вместо запуска... ну чтот такого... |
|||
|
||||
Sanchezzz |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1670 Регистрация: 19.11.2006 Где: Voronezh Репутация: 2 Всего: 60 |
обновление будет идти через сайт клиента копиие продукта ? если да :
1 увас есть бд собственная ключей где записаны все ключи продуктов структура ID | DATE_ACTIVATION | KEY | SITE | TYPE_LECENCE DATE_ACTIVATION Дата активации KEY - уникальный ключ SITE - адресс сайта TYPE_LECENCE тип лецензии (на 1 год, 2, 3 итд.) 2 если пользователь нажал обновление отсылается ключ проверяем его по БД смотрим дату активации проверяем откуда пришел запрос с какого сайта если совпадает с сайтом в БД и колючем. Выдаем скрипту информацию о обновлении где можно будет выбрать список обновлений. узер накликал что ему нужно отослал на сервере по тому что кликнул сгенерировал отдал скрипту. на клиете получил архив и инструкции что куда выполнил удалил архив. все действия делать через сокеты. можно еше временную сессию прикрутить скажем на 1 час. Сори если повторил кого то. Я не полностью все посты прочитал только некоторых людей. Если сольют сайт, нелегальное использование ПО карается законом если докозуемо. -------------------- Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS. |
|||
|
||||
SneG0K |
|
|||
![]() Max Mara ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1887 Регистрация: 1.12.2007 Где: Wis Dells Репутация: нет Всего: 54 |
Вы как сделайте. Для каждого пользователя свой ключ. В ключе (как уже было предложено) хранить какие-то пользовательские данные. После выдачи ключа, купившему надо зайти в админку и активировать этот ключ. Он заходит, вводит ключ, вы его проверяете и вносите себе в базу. И если кто-то еще раз попытается использовать тот-же ключ, то просто посылать его за покупаками.
Если все норм, то в корне сайта создать файл (ток зашифровать его потом =)) с ключем и уникальной для этого сайта строкой (например путь: для каждого сайта он будет различаться /home/server/exxample.com/www, тобиш я имею ввиду, что шанс совпадения маловероятен.) В index.php проверять все это и опять же либо отсылать за покупками, либо пусть работает. З.Ы. тему не читал, ссори, если уже есть такое предложение |
|||
|
||||
MoLeX |
|
|||
![]() Местный пингвин ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 4076 Регистрация: 17.5.2007 Репутация: 0 Всего: 140 |
Модератор: Сообщение скрыто. -------------------- Amazing ![]() |
|||
|
||||
MoLeX |
|
|||
![]() Местный пингвин ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 4076 Регистрация: 17.5.2007 Репутация: 0 Всего: 140 |
Alex13, сорри, промазал когда жал.
Djinn, это относится к тебе:
-------------------- Amazing ![]() |
|||
|
||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Для профи | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |