我创建了一个使用WCF与之通信的Windows服务。应该只能从同一台机器上调用该服务。如果我可以保证没有方式与另一台机器进行通信,我可以认为安全。
由于我在一台机器上使用通信,因此我选择使用NetNamedPipeBinding。这个绑定文档说它针对机上通信进行了优化,但没有给出任何保证。
我的问题是,NetNamedPipeBinding是否提供仅限机器的保证?如果不是什么绑定,或者您将如何实现提供此类保证的自定义绑定?
谢谢,
阿萨夫
答案 0 :(得分:6)
Microsoft在MSDN上的Choosing a Transport上发布了以下内容:
何时使用命名管道传输
命名管道是Windows操作系统内核中的对象,例如进程可用于通信的共享内存部分。命名管道具有名称,可用于单台机器上的进程之间的单向或双工通信。
当在一台计算机上的不同WCF应用程序之间需要通信,并且您希望阻止来自另一台计算机的任何通信时,请使用命名管道传输。另一个限制是,从Windows远程桌面运行的进程可能被限制在同一个Windows远程桌面会话中,除非它们具有提升的权限。
这几乎可以提供所需的保证。
答案 1 :(得分:3)
我正在阅读Essential WCF中的文字 - 第4章(Bindings)并找到了以下内容,我正在复制,只是为了帮助某人;
WCF将netNamedPipeBidning绑定限制为本地计算机通信
虽然可以使用命名管道通过网络进行通信,但WCF限制了对本地计算机通信的使用。这意味着它可用于确保您的服务无法通过网络提供。这是通过两种机制实现的:
a)拒绝网络安全标识符(SID:S-1-5-2)访问命名管道。 b)命名管道的名称是随机生成的,并存储在共享内存中,因此只有在同一台机器上运行的客户端才能访问它。
答案 2 :(得分:1)
NetNamedPipeBinding
仅适用于本地计算机。请参阅帖子here中的图表,以获得有条不紊的方法来确定要使用的绑定类型。
这是一个external link,它提供了一个更明确的答案,而不仅仅是采取我的话语。