|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
21.08.2011, 01:42 | #1 |
Регистрация: 21.08.2011
Сообщений: 6
|
Какую защиту применить в программе.
Ecть caмaпиcный coфт, кoтopый oбpaщaeтcя к yдaлeннoмy http cepвepy. Cepвep выдaeт индивидyaльный идeнтификaтop для кaждoгo нoвoгo пoдключившeгocя клиeнтa. Пpoблeмa в тoм, чтo пpoшapeнный пoльзoвaтeль мoжeт нaгeнepиpoвaть ceбe кyчy тaкиx идeнтификaтopoв пyтeм oтпpaвки пoдгoтoвлeнныx http-зaпpocoв. Чтo мoжнo cдeлaть c cepвepнoй и клиeнтcкoй чacтью, для пpeдoтвpaщeния дaннoй cитyaции?
|
21.08.2011, 10:51 | #2 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
трудно советовать, не видя конкретики - как обращаются между собой сервер и программа, что представляет собой идентификатор и т.д.
софт на стороне HTTP сервера тоже Вы пишете/он доступен для изменения? Если к серверной части доступа у Вас нет и запрос на подключение к серверу такой простой, что его может понять "прошаренный" пользователь, то про защиту программы (точнее о том, что нельзя получить идентификатор без вашего клиентского ПО) - можете забыть... p.s. всё вышесказанное является моим личным мнением и однозначно может быть ошибочным.. |
21.08.2011, 11:48 | #3 |
Старожил
Регистрация: 04.02.2009
Сообщений: 17,351
|
Пусть удаленный клиент решит задачу. Допустим Вы высылаете набор определенных чисел (каждый раз разный), которые будут являться коэффициентами какого-нибудь уравнения. Пользователь должен вернуть решение . Так Вы будете уверены, что даете идентификатор именно Вашей программе, а не кому попало.
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика |
21.08.2011, 12:25 | #4 |
Регистрация: 21.08.2011
Сообщений: 6
|
Сервер и клиентская программа самописные, т.е. имеется полный доступ. Софт на стороне сервера тоже пишу я. Сервер и клиент общаются через протокол HTTP. Идентификатор представляет собой набор цифр типа "000001", "000002". Пользователь не должен принимать никакого участия в получении идентификатора.
|
21.08.2011, 16:57 | #5 | |
Старожил
Регистрация: 04.02.2009
Сообщений: 17,351
|
Цитата:
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика |
|
21.08.2011, 17:53 | #6 |
Регистрация: 21.08.2011
Сообщений: 6
|
Потому что идея в том, что нужно что бы пользователь просто запускал программу-клиент и не беспокоился, каким образом происходит привязка софта к его компьютеру. Если привязываться к ip пользователя, тогда программа-клиент не сможет работать на машинах которые используют одинаковые прокси. Либо наоборот возможен вариант, когда "пользователь-хакер" получит больше одного идентификатора используя динамический ip.
|
21.08.2011, 18:25 | #7 |
Форумчанин
Регистрация: 20.12.2006
Сообщений: 135
|
Шифруй данные которые отправляются на сервер от клиента, а на сервере обратно расшифровывай и проверяй соответствие какой нибудь формуле, если ответ формулы верный отправляй либо так же шифрованый пакет, либо в открытом виде.
Ну к примеру запустили клиентскую прогу с идентификатором 150, она отправляет на сервер (предварительно зашифровав) строчку 10,50,150,90, сервер получив расшифровывает строчку складывает 10+50+90 сравнивает с третьим числом 150, если совпало отправляем ключ, если нет шлём нафиг... Примерно так
writeln('Hello Dude!!!');
|
21.08.2011, 18:41 | #8 |
Регистрация: 21.08.2011
Сообщений: 6
|
Этот идентификатор предварительно нужно выдать клиенту при первом обращении к серверу. Выдачу их и нужно контралировать. Количество идентификаторов ограниченно и нельзя допустить выдачу нескольких на одну машину. Или я что-то не правильно понял?
|
21.08.2011, 22:13 | #9 |
Ископаемый админ
Форумчанин
Регистрация: 08.07.2010
Сообщений: 992
|
Пропишите ID и все, что нужно, в куки. Дополнительно можно реализовать то, что вам советуют, идентификацию клиента по типу вопрос-ответ. Тогда все это будет выглядеть так:
1.Сервер проверяет куки на пользовательской машине, если они отсутствуют, то методом вопрос-ответ проверяется, что это ваша программа, а не что-то другое. Реализовать это просто: сервер выдает случайное число, например 211211, клиентская программа должна его обработать по определенной формуле, например 211211*5-128 и выдать серверу ответ. Если сервер получает ответ 1055927, то пользователю выдается ID и прописываются куки. Если нет, то сервер не пускает. 2. Если при проверке куки обнаружены, из них читается ID и начинается работа. Для защиты во время работы не лишним будет использовать механизм сессий.
Выписывайте лучший журнал о беспроводных технологиях "Ukrainian Wireless News"! Издается с 1913 года.
|
21.08.2011, 22:50 | #10 |
Регистрация: 21.08.2011
Сообщений: 6
|
Ок. Всем спасибо. Думаю по другому никак, только достаточно удалить пользователю куки и он может получить новый ID.
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
[Qt] Как применить сигнал в даной программе? | Enchance | Qt и кроссплатформенное программирование С/С++ | 6 | 08.03.2011 16:05 |
Какую формулу применить? | rusgaz | Microsoft Office Excel | 3 | 18.10.2010 23:43 |
Не получается применить DecodeDate | sergey113 | Помощь студентам | 2 | 27.03.2009 23:12 |
через какую сетевую карту входить в инет, а через какую в лан | шКОЛЯР | Свободное общение | 2 | 27.06.2008 17:55 |