Нужна помощь в защите сервиса WCF - PullRequest
2 голосов
/ 09 февраля 2011

Я разрабатываю Службу WCF и хочу защитить ее от несанкционированных пользователей.поэтому я планирую добавить параметр «RSAKey» в службу, и клиент (AddIn) будет генерировать и отправлять RSAKey при каждом запросе, а служба будет проверять переданный RSAKey в течение этого времени для этого IP-адреса и служит только в том случае, если он действителен.

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

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

Ответы [ 4 ]

1 голос
/ 09 февраля 2011

Похоже, ваша главная проблема - это "чрезмерное использование".Если это так, то как насчет реализации некоторых типов ограничений на клиентские вызовы.Вы можете:

-Лимитировать количество запросов, которые клиент делает за указанный период времени
-Лимитировать количество результатов, возвращаемых в одном запросе

Конечно, ни один из этих вариантовзащитит вас в долгосрочной перспективе.Со временем любой клиент все равно сможет загрузить всю БД через ваш сервис.Используя некоторые ограничения, вы хотя бы тратите время на анализ журналов и определение того, действительно ли один из ваших клиентов является вредоносным.Регистрируя запросы к службе, должно быть довольно легко определить, делает ли определенный клиент (-ы) что-то плохое.

1 голос
/ 09 февраля 2011

Краткий ответ: Нет.

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

Крупные компании вкладывают большие деньги в попытки реализовать этот тип DRM, и он всегда терпит неудачу. Мрак - единственный реальный способ, которым работает этот тип вещей (где никто не мешает его сломать).

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

(Что делает этот сервис, что вас так волнует?)

0 голосов
/ 09 февраля 2011
  1. Оставьте поколение RSAKey вне клиентского приложения.Переместите его в одну сборку, которая будет использоваться как сайтом, с которого загружается клиентское приложение, так и службой WCF.

  2. Укажите RSAKey, когда пользователь собирается загрузить клиентское приложение.Сохраните пару {IP-адрес, сгенерированный RSAKey} в магазине, общем для сайта, с которого загружается клиентское приложение, и службы WCF.

  3. Предоставьте возможность установить RSAKey для клиента (поэтому RSAKey будет прикреплен к каждому сообщению WCF).

  4. Проверять каждое сообщение, полученное службой WCF, чтобы определить, содержит ли оно RSAKey и является ли ключ действительным (поиск существующих{IP-адрес, сгенерированный парой RSAKey} в общем хранилище).

0 голосов
/ 09 февраля 2011

Может быть, вы можете разместить свою службу WCF на сервере IIS, затем вы можете включить доступ https и получить IP-адрес клиента. Таким образом, вы можете приостановить ip доступа на некоторое время, если есть подозрение на атаку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...