2012-03-05 38 views
2

我正在開發Web服務。用戶將能夠使用不同asp.net項目上的表單創建用戶帳戶。因此,當用戶輸入密碼信息時,我需要將該信息存儲在數據庫中。但是現在,當用戶通過Web服務發送用戶證書時,我需要用戶發送爲安全目的而加密的密碼。要加密的請求中的C#Web服務密碼

現在我們怎麼能有相同的潤溼程序,以便我能夠驗證請求。

回答

3

您想要的是使用HTTPS連接將密碼從用戶安全地傳輸到服務器。以下是有關如何使用適用於HTTPS的IIS設置開發環境的說明 - scottgu link

HTTPS協議將處理加密和解密,您只需處理服務器端的純文本密碼。

之後,在服務器端,計算密碼的散列並將其與存儲在數據庫中的散列進行比較。標準的ASP.NET SQL成員資格提供程序可用於此目的。

Jeff Atwood對存儲和散列密碼背後的問題有一個很好的解釋 - coding horror link

+0

Web服務將成爲HTTPS,但我的疑惑是,可以通過HTTPS以明文形式發送密碼嗎? – Pinu 2012-03-05 14:57:15

+0

是的,可以通過HTTPS以純文本形式發送密碼。這就是通常的做法。這個協議處理加密。 – AlexD 2012-03-05 14:59:30

1

如果用戶的瀏覽器以任何方式知道如何加密你的密碼,那麼你就會失去這一點,一個聰明的黑客可以提取這種加密。

使用SSL將信息直接傳遞到您的應用程序基本上正在做你在問什麼,並且是接受密碼的安全接受方式。您只需要檢查數據庫中的加密版本。

您的應用程序接收原始密碼(瀏覽器和服務器已經處理了加密/解密),然後您的應用程序將其加密並在數據庫中查找匹配項。

Web服務完成的另一種方式是使用單個登錄步驟,該步驟返回用於進一步通信的到期令牌。 OAuth是最流行的,所以做一些Google搜索。