Защита службы WCF, чтобы ее вызывал только приложение Silverlight - PullRequest
3 голосов
/ 27 июня 2009

Я пишу приложение Silverlight, которое будет считывать и записывать данные в базу данных на стороне сервера через некоторые веб-службы WCF.

Каков наилучший способ защиты этих веб-служб?

Моя цель состоит в том, чтобы убедиться, что службы не могут вызываться другими приложениями и могут быть спам-запросы на добавление элементов в базу данных. Только приложение Silverlight должно иметь доступ к ним.

Ответы [ 2 ]

8 голосов
/ 27 июня 2009

Дон абсолютно прав, что нет надежного способа убедиться, что клиент является приложением Silverlight .

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

Как правило, вы захотите рассмотреть несколько разных подходов:

  • Безопасность на транспортном уровне. Кто-нибудь вмешивался в трафик? Для этого мы используем SSL.
  • Аутентификация. Я разговариваю с кем-то, кому доверяю? Здесь мы обычно используем один из механизмов аутентификации (скажем, Forms Auth). Вы можете использовать проверку подлинности с помощью форм для защиты как Silverlight (фактически страницы, на которой находится Silverlight), так и служб WCF. Смущает, что SSL может использоваться (хотя редко, потому что это боль в шее) для аутентификации.
4 голосов
/ 27 июня 2009

В общем, вы не можете ничего сказать о клиенте. Если вы попытаетесь предотвратить попадание приложений, не относящихся к Silverlight, на ваш сайт, злонамеренный клиент может легко выдать себя за приложение Silverlight, и вы вернетесь к исходной точке.

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

Edit:

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

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