我們使用的是Asp.net身份驗證(當前版本爲2)。爲了本地用戶身份驗證的目的,框架需要明文密碼。據我所知,這不是傳輸密碼的安全方法。如何在Asp.net身份登錄時輸入密碼
一個快速的答案可以是:使用SSL來加密密碼傳輸,但這不是一個可行的解決方案給大家。
這是我們認爲的: 登錄表單提供了一次性隨機令牌,然後它將密碼散列,並將其附加到令牌並再次散列。結果被髮送到服務器。 服務器具有密碼和隨機令牌的散列,將它們連接在一起,如果它們的散列等於客戶端發送的內容,則繼續登錄過程。
這對於Asp.net標識提供的當前api是不可能的:它期望原始密碼。
我們該怎麼辦?僅依賴於ssl?有沒有一種方法來確保沒有SSL的密碼傳輸?
爲什麼SSL不是一個可行的解決方案?以明文方式傳輸密碼或使用僞劣哈希算法甚至可以降低可行性。 – DGibbs
SSL/TLS是您的最佳選擇。其他選擇是浪費時間和安全漏洞。 – oleksii
在你的實現描述中,我可以看到至少有一個安全漏洞:你的來自客戶端的散列基本上變成了密碼,你需要自己保護它。請不要自己做密碼學 - 你不會這樣做。要麼使用SSL,要麼你的客戶將不得不通過http將其吸收並轉移密碼 - 如果他們無法承擔使用SSL的託管服務(你可以獲得這些天的免費證書) – trailmax