2015-04-22 37 views
1

我們使用的是Asp.net身份驗證(當前版本爲2)。爲了本地用戶身份驗證的目的,框架需要明文密碼。據我所知,這不是傳輸密碼的安全方法。如何在Asp.net身份登錄時輸入密碼

一個快速的答案可以是:使用SSL來加密密碼傳輸,但這不是一個可行的解決方案給大家。

這是我們認爲的: 登錄表單提供了一次性隨機令牌,然後它將密碼散列,並將其附加到令牌並再次散列。結果被髮送到服務器。 服務器具有密碼和隨機令牌的散列,將它們連接在一起,如果它們的散列等於客戶端發送的內容,則繼續登錄過程。

這對於Asp.net標識提供的當前api是不可能的:它期望原始密碼。

我們該怎麼辦?僅依賴於ssl?有沒有一種方法來確保沒有SSL的密碼傳輸?

+2

爲什麼SSL不是一個可行的解決方案?以明文方式傳輸密碼或使用僞劣哈希算法甚至可以降低可行性。 – DGibbs

+2

SSL/TLS是您的最佳選擇。其他選擇是浪費時間和安全漏洞。 – oleksii

+1

在你的實現描述中,我可以看到至少有一個安全漏洞:你的來自客戶端的散列基本上變成了密碼,你需要自己保護它。請不要自己做密碼學 - 你不會這樣做。要麼使用SSL,要麼你的客戶將不得不通過http將其吸收並轉移密碼 - 如果他們無法承擔使用SSL的託管服務(你可以獲得這些天的免費證書) – trailmax

回答

4

網絡依靠https來保護密碼等敏感信息。我會說遵循標準。您的哈希算法不像幾十年的https開發那樣經過驗證。

+0

是的,但考慮一個網站模板,許多人,尤其是小型企業/個人,他們沒有或不在乎https。我真的很喜歡我的代碼給他們一些保護,即使沒有ssl它是不完整的。他們呢? – Alireza

+2

@Alireza由於您擁有系統的登錄功能,我猜你還有一些可能包含敏感信息的個人數據或其他形式的交易,如果實施者選擇不使用https,那麼這些信息都不會被保護。網絡上的趨勢是將這些日子的所有東西放在後面,即使是「簡單」的文本網站。 – Cros