【发布时间】:2012-02-27 23:35:58
【问题描述】:
我有一个.NET application 和一个.NET Windows Service。如何在这两者之间建立安全的沟通渠道?
Internet 上的大多数人建议使用 Named Pipes 与 Windows 服务进行通信。但这似乎可能会在系统中造成很大的安全漏洞。如果某个家伙对我的应用程序进行逆向工程,他会知道我使用的管道名称和协议,这允许他连接到我的服务并做他想做的任何事情。
示例:我的客户端安装了我的应用程序并授予它安装服务的完全权限。然后他下载了一些其他软件,没有授予它全部权限。但是该软件使用管道名称和反向工程协议找到了我的服务并利用它。
那么如何设计一个安全的沟通渠道呢?该服务能否以某种方式访问刚刚连接到其管道的程序(以便我可以比较它的哈希,前提是该服务已安装到安全位置)?或者也许使用不同的IPC? Microsoft 如何保护自己的服务免受此安全漏洞的影响?
【问题讨论】:
-
命名管道支持安全性,我记得,因为我不得不禁用它:p
-
为什么要先挖那个洞?如果您的应用程序需要权限,请再次询问用户!如果他不给你,考虑回退或中止。
-
@ordag:因为每次 Windows 启动时它都需要权限。而且我不希望我的整个应用程序在升级后运行,因为这可能会导致其他安全问题。
标签: .net security windows-services ipc named-pipes