2009-06-23 55 views
9

我已經設置了一個WPF應用程序,它是使用互斥鎖的單個實例,這允許應用程序在每個用戶帳戶中運行,如果您正在使用用戶切換。該應用程序建立一個WCF命名管道,以便我可以與另一個進程的單個實例進行通信(即當第二個進程在它因Mutex而終止之前運行時)。WCF命名管道安全和多用戶會話?

我想知道是否應該做任何事情(最佳實踐)來保護命名管道?

此外,我想知道命名的管道消息是否會達到系統內的所有正在運行的進程或僅在當前用戶會話內。如果命名管道是系統範圍內發送的,那麼將通信限制在當前用戶會話中的最佳實現是什麼?

回答

2

命名管道意味着通信在同一臺機器上是點對點的。我相信默認情況下它是安全的,但是由於即使在同一個網絡上,通信也不會離開機器,所以安全並不是最令人擔心的 - 至少在命名管道組件和它的通信消費者。

查看Juval Lowy的「Programming WCF Services 2nd Edition」。第10章是關於組件安全的。在第514頁上,他寫道:「在IPC上使用Message安全是沒有意義的,因爲在IPC中,從客戶端到服務總是隻有一跳。該頁面上的圖表顯示傳輸安全性默認爲打開管道。

1

paper on named pipe security討論了很多細節的話題。

總之,如果你不小心,你可能允許惡意程序使用標準用戶權限運行的利用管道把自己提升到與命名管道服務器相同的特權級別

恐怕我不知道默認情況下WCF實施是否可以安全抵禦此類攻擊

7

無法從網絡訪問WCF中的命名管道,並且無需加密即可保護它們。但是,WCF服務對於romkyns提到的攻擊並不安全。

我建議你閱讀這篇文章:

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. 要麼模擬服務OR
  2. 竊聽和篡改數據假設流氓過程本身連接到服務。但是,如果服務使用訪問安全性來檢查主叫用戶的身份,這可能是不可能的。
+0

所有鏈接已死亡。 – jesusduarte 2016-03-19 01:57:31