2009-08-03 2 views
3

В настоящее время я пишу пару клиент-серверных приложений. Недавно я столкнулся с вопросом: «Как я могу запретить кому-либо писать собственное клиентское приложение и использовать наш сервер?» У меня действительно не было ответа на этот вопрос, потому что все данные защищенной связи, которые я сделал до настоящего времени, чтобы обеспечить связь между клиентом и сервером. Это будет отход от этой мысли в том, что - как я могу обеспечить, чтобы клиентское приложение на другом конце было клиентским приложением, с которым я хочу поговорить (а не кем-то, притворяющимся моим клиентским приложением)?Как предотвратить использование несертифицированными клиентскими приложениями моего сервера?

У кого-нибудь есть разумные мысли сделать это?

ответ

3

Вы не можете обеспечить такую ​​вещь. Единственное, что видит сервер, это связь, и если другое клиентское приложение ведет себя точно так же, как ваше клиентское приложение, вы не видите разницы.

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

0

Это трудно ответить, не зная больше о том, что делает ваш сервер и кто такие клиенты. Но есть несколько вариантов:

  1. Посмотрите на IP своих клиентов. Если количество клиентов невелико, необходимо поддерживать список IP-адресов, которым разрешено использовать вашу систему.
  2. Поскольку вы уже используете шифрование, почему бы не пойти дальше и работать с клиентскими сертификатами?
+1

1. IP-адреса могут быть динамическими, могут использоваться совместно и по-прежнему не обеспечивают правильное использование клиентского программного обеспечения. 2. Неавторизованное клиентское приложение может использовать те же клиентские сертификаты. Это не мешает другим клиентским приложениям использовать сервер. –

0

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

Если требуется, частое изменение протокола с автоматическими обновлениями, нажимая на клиента, может препятствовать разработке альтернативных клиентов. (exterrogated case: клиент состоит только из загрузочного устройства, загружает приложение с сервера. Протокол и соответствующие части приложения изменяются с каждой копией с помощью вирусов).

Лицензия и адвокаты могут помочь здесь

-1

вызов/ответ один способ.

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

+1

Скрытие файлов в клиентском приложении небезопасно. На самом деле нетрудно извлечь «скрытые» данные из клиентского приложения. –

+0

Определить «действительно не сложно». GSM использовал этот метод в течение 15 лет. Единственный успех в его преодолении - исключительно грубая сила. – KevinDTimm

+0

Кроме того, где эти недовольные клиенты получают клиентское приложение в первую очередь? – KevinDTimm