2009-07-24 107 views
0

我想在WCF中使用用戶名消息安全。我試圖找出使用None/Anonymous的傳輸憑證類型是否會帶來明確的安全風險。沒有傳輸安全性的WCF用戶名認證存在安全風險?

我擔心的是通過使用WS-trust規範(TLS協商)隧道傳輸二進制數據的初始交換。在共享安全上下文建立之前,這種嘗試驗證我的用戶名和密碼是否會受到網絡嗅探器的影響?

任何想法的歡迎。

謝謝。

<security mode="Message"> 
    <transport clientCredentialType="None" /> 
    <message clientCredentialType="UserName" negotiateServiceCredential="true" algorithmSuite="Default" establishSecurityContext="true" /> 
</security> 

回答

3

根據WS-Security的規範,UserName令牌可以包含用戶名和密碼,並且不加密。這會看到這些信息通過未加密的線路傳輸。二進制格式不是一種威懾。這通常被稱爲「默默無聞的安全性」,而不是安全措施。

巧合的是,我在稍後閱讀Scott Hanselman的文章時遇到了很多這方面的信息。它暗示你正在遇到的問題。 http://www.hanselman.com/blog/BreakingAllTheRulesWithWCF.aspx

如果您打算啓用此功能,您一定希望在此啓用某些傳輸級安全性。

以下是關於WS-Security UsernameToken的OASIS文檔。它似乎允許多種場景,但我不確定WCF默認使用哪種場景:http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0.pdf

如果您好奇,您希望啓用消息日誌並檢查消息以查看正在發送的消息。 Enable message logging

+0

「用戶名令牌應包含用戶名和密碼,未加密。」 - 這是不正確的。 WS-Security定義可以發送密碼摘要。這意味着密碼本身不再通過電線發送。它基本上使知道密碼的兩方能夠生成該散列。但重播攻擊仍然是一個問題。 – Alex 2009-08-30 00:30:39

0

是的,它會的,數據將不會被加密在網絡上,因此,這些憑據將暴露給任何關心的人看。

你有沒有特別的理由希望這樣做?我不會推薦它。

2

在這裏做了更多的研究。從本質上講,如果您使用密碼摘要(默認),則不存在暴露給某人嗅探網絡的密碼的風險。如果您不擔心郵件正文本身的機密性,則不需要傳輸安全性。

這是這裏解釋:http://msdn.microsoft.com/en-us/library/ms977327.aspx

長話短說:

  1. 密碼摘要是用來驗證客戶端知道正確的密碼。密碼永遠不會發送。只計算散列值。

  2. 使用隨機數和時間窗口防止重放攻擊。服務器記住給定時間窗口的隨機數,並確保只有一個具有該隨機數的消息被接受。簽署整個事情,你很安全。

+0

給它一個賞金。希望這會帶來一些解決方案 – mirezus 2009-07-27 16:21:46