2010-03-17 6 views
4

Ради аргумента, скажем, что у меня есть базовая служба WCF. Помимо внедрения методов аутентификации (логин/выход из системы), что мешает кому-то просто взломать Visual Studio, добавив веб-ссылку на сервис моего веб-сайта, а затем поиграть с моим сервисом? Я не знаком с методом, чтобы остановить кого-то от этого. Идея о том, что кто-то загружает все мои контракты с данными/операциями, а затем начинает играть, держит меня ночью, и мне нравится спать!Безопасность конечных точек WCF

ответ

4

Обнаруживаемость фактор движения за веб-сервисами и особенно SOA. Возможность любого, кто может добраться до службы, чтобы вытащить WSDL, создать прокси в Visual Studio (или какой-нибудь другой инструмент) и начать использовать эту услугу, является одной из основных причин создания веб-сервиса!

Я предполагаю, что вы могли бы сгенерировать все клиентские прокси, а затем отключить конечную точку mex, но это в значительной степени калечит WCF, и даже тогда это только безопасность через неясность.

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

+0

+1 хорошие моменты. Да, отключив все функции, связанные с метаданными (никакого поведения «serviceMetadata», конечной точки MEX), вы можете в значительной степени «скрыть» ваш сервис - только те, кто конкретно знает, где он живет и как получить доступ к нему, смогут это сделать , Предположим, однако, что ваши худшие враги * делают * знают ..... –

+0

Спасибо за сообщение. Я думал об удалении конечной точки mex, но я решил, что для этого нужно будет больше. – Matt

1

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

Не отдавайте ничего другим.

Смежные вопросы