我有.NET application
和.NET Windows Service
。如何在这两者之间建立安全通信渠道?
互联网上的大多数人建议使用Named Pipes与Windows服务进行通信。但似乎这可能会在系统中造成很大的安全漏洞。如果一些家伙反向设计我的应用程序,他将知道管道名称和我使用的协议,这使他能够连接到我的服务并做他想做的任何事情。
示例:我的客户端安装我的应用程序并为其提供安装服务的完全权限。然后他下载了一些其他软件,没有给它全部权限。但该软件使用管道名称和反向工程协议找到我的服务并利用它。
那么如何设计安全的沟通渠道呢?该服务可以以某种方式访问刚刚连接到其管道的程序(这样我可以比较其哈希,只要服务已安装到安全位置)?或者也许使用不同的IPC? Microsoft如何在这个安全漏洞中保护自己的服务?
答案 0 :(得分:7)
您只需要为命名管道设置安全描述符,这样只有您的客户端代码才能访问它。
详细信息如下:
http://msdn.microsoft.com/en-us/library/windows/desktop/aa365600%28v=vs.85%29.aspx
答案 1 :(得分:0)
我要看一下加密协议,例如RSA加密算法。并且您使用的传输协议(管道,TCP / IP,消息等)无关紧要。其中任何一个都可以以某种方式“读取”。 在您的情况下,我将使用一些网络协议(TCP / IP,UDP),以便在将来免费提供可扩展性功能。客户端和服务器端可以以这种方式在不同的PC /平台上。但是很多事情都取决于要求。为什么你真的需要保护这些东西,应该保护哪些数据(可能是为其他人检索它的更容易的方法),数据量,其他?