我有一個.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