Гарантируется ли связывание NetNamedPipeBinding только на одном компьютере? - PullRequest
4 голосов
/ 16 марта 2010

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

Поскольку я использую связь на одном компьютере, я выбрал NetNamedPipeBinding . В этой документации по привязке сказано, что она Оптимизирована для связи внутри машины , но не дает никаких гарантий.

Мои вопросы: обеспечивает ли NetNamedPipeBinding гарантии только для компьютера? Если нет, что делает привязка, или как вы будете реализовывать пользовательские привязки, которые предоставляют такие гарантии?

Спасибо
Асаф

Ответы [ 3 ]

6 голосов
/ 16 марта 2010

Microsoft опубликовала следующее на Выбор транспорта на MSDN:

Когда использовать именованный трубопроводный транспорт

Именованный канал - это объект в ядре операционной системы Windows, такой как раздел общей памяти, который процессы могут использовать для связи. Именованный канал имеет имя и может использоваться для односторонней или дуплексной связи между процессами на одном компьютере.

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

Это в значительной степени дает желаемую гарантию.

3 голосов
/ 16 мая 2013

Я читал текст из Essential WCF - глава 4 («Привязки») и обнаружил следующее, которое я воспроизводил только с целью помочь кому-то;

WCF ограничивает привязку netNamedPipeBidning к связи с локальным компьютером

Хотя можно использовать именованные каналы для связи через сеть, WCF ограничивает использование локальной связью компьютера. Это означает, что его можно использовать для гарантии того, что ваша служба недоступна в сети. Это достигается с помощью двух механизмов:

a) Идентификатору безопасности сети (SID: S-1-5-2) отказано в доступе к указанному каналу. b) имя именованного канала генерируется случайным образом и сохраняется в общей памяти, поэтому только клиенты, работающие на одном компьютере, могут получить к нему доступ.

1 голос
/ 16 марта 2010

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

Вот внешняя ссылка , которая дает более точный ответ, чем "просто возьми мое слово".

...