2012-12-13 62 views
1

我目前正在開發一個允許用戶使用密碼登錄的c#web應用程序。我需要包含的功能是忘記密碼功能。什麼是忘記密碼過程的最佳做法?

什麼是忘記密碼的推薦流程?

我正在考慮這個:

  • 用戶點擊忘記密碼,請輸入電子郵件地址
  • 電子郵件發送
  • 點擊鏈接的電子郵件(鏈接只有一次有效時間內)
  • 採取並要求輸入新的密碼(他們是否也應答安全問題?)
  • 密碼更改,郵件發送給此類用戶
  • 用戶現在可以用新密碼登錄

回答

3

你的點子看起來堅實,但我想補充一些其他方面的考慮:

  • 確保您在電子郵件中使用生成的令牌使用爲隨機化而設計的.Net Framework加密類,不是那種看起來是隨機的,但不是爲此目的而設計的。
  • 對發送重置電子郵件的帳戶不採取任何操作(否則,如果他們知道他們的電子郵件,人們將能夠鎖定其他人的帳戶)
  • 添加限速器,可以爲每小時生成多少次重置給定的電子郵件。否則,有人可以通過以下方式對用戶進行DOS操作:(a)使用x錯誤密碼來鎖定帳戶,然後(b)爲他們生成重置電子郵件的速度比電子郵件系統所能提供的更快。
  • 儘可能地推遲到其他系統,如OpenID。當你推出自己的產品時很容易出錯。
+0

這些都是很好的觀點,只有在x登錄失敗後鎖定賬戶的觀點值得商榷。我永遠不會鎖定一個帳戶,因爲登錄不良,只會延遲下一次可能的登錄來阻止暴力強制。用垃圾郵件向用戶發送垃圾郵件也不成問題,使用匿名電子郵件帳戶的普通電子郵件將垃圾郵件發送給他是很容易的。 – martinstoeckli

0

我們有兩種方法來檢索忘記密碼: 1.通過註冊電子郵件ID 2.通過註冊的手機號碼

註冊的電子郵件ID:

一個。要求用戶提供註冊郵箱編號

b。系統檢查提供的電子郵件ID是否在數據庫中可用

c。如果電子郵件ID在數據庫中存在,系統將發送電子郵件以重置密碼,但如果電子郵件ID不在數據庫中,則系統會顯示警報消息。 d)。用戶必須在重置忘記密碼的同時提供強密碼。

e。密碼重置成功,並且相對於電子郵件ID也在數據庫中發生更改。

註冊手機號碼:

的過程與電子郵件,但是在這種情況下幾乎相同,OTP將在註冊手機號碼發送。 我們需要整合第三方SDK,或者我們可以在IOS中使用imessage。

相關問題