我有一个.NET application
和一个.NET Windows Service
。我如何在这两者之间建立一个安全通信通道?如何安全地与我自己的Windows服务沟通
因特网上的大多数人推荐使用Named Pipes与Windows服务进行通信。但似乎这可能会在系统中造成一个巨大的安全漏洞。如果一些老兄反向工程师对我的应用程序进行反向工程,他会知道管道名称和我使用的协议,并允许他连接到我的服务并做他想做的任何事情。
示例:我的客户端安装我的应用程序,并为其提供完整的权限来安装该服务。然后他下载一些其他软件,并且不会给赋予它全部特权。但该软件找到我的服务并利用它,使用管道名称和反向工程协议。
那么如何设计一个安全的通信通道呢?该服务能否以某种方式访问刚刚连接到它的管道的程序(以便我可以比较它的哈希,假设服务已安装到安全位置)?或者也许使用不同的IPC?微软如何确保自己的服务免受此安全漏洞的侵害?
命名管道支持安全性,我记得,因为我必须禁用它:p – leppie 2012-02-06 13:49:50
为什么首先挖那个洞?如果您的应用程序需要特权,请再次询问用户!如果他不给你,请考虑回退或中止。 – ordag 2012-02-06 13:53:07
@ordag:因为每次Windows启动时都需要权限。我不希望我的整个应用程序运行提升,因为这可能会导致其他安全问题。 – Paya 2012-02-06 13:56:31