我已经使用Mutex设置了一个WPF应用程序是单实例,如果您使用用户切换,这允许应用程序在每个用户帐户中运行。应用程序设置一个名为WCF的管道,以便我可以从另一个进程与单个实例进行通信(即第二个进程在由于Mutex而终止之前运行)。
我想知道是否应该采取任何措施(最佳做法)来保护命名管道?
此外,我想知道命名管道消息是否会到达系统内的所有正在运行的进程,或者仅在当前用户会话中。如果在系统范围内发送命名管道,那么将通信限制为当前用户会话的最佳方法是什么?
答案 0 :(得分:7)
无法从网络访问WCF中的命名管道,并且不需要加密来保护它们。但是,WCF服务不能抵御 romkyns 提到的攻击。</ p>
我建议你阅读这篇文章:
Exploring the WCF Named Pipe Binding - Part 1
Exploring the WCF Named Pipe Binding - Part 2
Exploring the WCF Named Pipe Binding - Part 3
Exploring the WCF Named Pipe Binding - Part 4
关于所涉及的安全问题。
简而言之,WCF允许任何进程将自己伪装成服务并且:
答案 1 :(得分:2)
命名管道意味着通信在同一台机器上是点对点的。我相信它默认是安全的,但由于通信永远不会离开机器,即使在同一网络上,安全性也不是最令人担心的问题 - 至少在命名管道组件与其之间的通信方面消费者。
查看Juval Lowy撰写的“编程WCF服务第2版”。第10章是关于组件安全性的。在第514页,他写道“在IPC上使用Message安全性是没有意义的,因为使用IPC时,从客户端到服务的总是只有一跳。该页面上的图表显示默认情况下为传输安全性启用了管道
答案 2 :(得分:1)
这个paper on named pipe security详细讨论了这个主题。
简而言之,如果您不小心,您可以允许以标准用户权限运行的恶意程序利用管道将自身提升到与命名管道服务器相同的权限级别。
我担心默认情况下我不知道WCF实现是否可以抵御此类攻击。