NetNamedPipeBinding绑定是否保证仅在同一台计算机上工作?

5

我创建了一个使用WCF进行通信的Windows服务。该服务只应从同一台计算机上调用。如果我可以保证没有其他计算机可以与其通信,那么我可以认为它是安全的。

由于我正在单台计算机上使用通信,因此我选择使用NetNamedPipeBinding。该绑定的文档称其为针对本地通信进行了优化,但并不提供任何保证。

我的问题是,NetNamedPipeBinding是否提供仅限本机的保证?如果没有,那么哪种绑定提供此类保证,或者如何实现自定义绑定以提供此类保证?
谢谢, Asaf
3个回答

6

微软在MSDN上发布了关于选择传输方式的以下内容:

何时使用命名管道传输

命名管道是Windows操作系统内核中的一个对象,例如进程可以用于通信的共享内存部分。命名管道有一个名称,并且可用于单台计算机上进程之间的单向或双向通信。

当需要在单台计算机上不同的WCF应用程序之间进行通信,并且希望防止来自其他计算机的任何通信时,请使用命名管道传输。另一个限制是来自Windows远程桌面运行的进程可能会被限制在相同的Windows远程桌面会话中,除非它们具有提升的特权。

这基本上提供了所需的保证。


5
有趣的是,命名管道确实能够在计算机之间进行通信。这是否意味着微软专门阻止了命名管道在WCF中使用该特性? - Jack Ukleja

3
我正在阅读《 Essential WCF 》第四章(绑定),发现以下内容,我只是想帮助别人而复制它:
WCF将netNamedPipeBidning绑定限制为本地机器通信
虽然可以使用命名管道在网络上进行通信,但WCF仅将其用于本地机器通信。这意味着它可用于确保您的服务不在网络上可用。这是通过两种机制实现的:
a)拒绝网络安全标识符(SID:S-1-5-2)访问命名管道。 b)命名管道的名称是随机生成并存储在共享内存中,因此只有在同一台计算机上运行的客户端才能访问它。

1

NetNamedPipeBinding 只适用于本地机器。请参见此处的图表(链接),以了解确定要使用哪种类型的绑定的良好、系统化的方法。

这里有一个外部链接,提供比“只听我的话”更明确的答案。


@Matt:谢谢你,但我从微软官方那里找到了更确切的信息,并将其作为我的答案发布。感谢你的时间。 - Asaf R

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接