Как предотвратить использование моего сервера нелегальными клиентскими приложениями? - PullRequest
3 голосов
/ 03 августа 2009

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

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

Ответы [ 4 ]

3 голосов
/ 03 августа 2009

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

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

0 голосов
/ 03 августа 2009

вызов / ответ односторонний.

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

0 голосов
/ 03 августа 2009

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

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

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

0 голосов
/ 03 августа 2009

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

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