2010-09-24 113 views
2

的流程是:將電子郵件發送到用戶的密碼重置

  1. 用戶輸入電子郵件地址
  2. 後提交,電子郵件被髮送到用戶
  3. 電子郵件中將包括一個鏈接,將採取用戶重置密碼頁面。

現在,我該如何根據電子郵件地址獲取用戶ID並對其進行加密?那麼鏈接應該是什麼?就像我想要的是獲取用戶ID,然後以某種方式對其進行加密,以便鏈接不包含實際ID,並且該鏈接將使用戶訪問將有文本框重置密碼的頁面。我只是困惑如何去做。

也是這種安全的方式?重置這樣的密碼?

回答

13

我通常在數據庫中創建一個新表:

PasswordresetRequest具有以下字段:

  • 編號:GUID - 密碼重置請求的標識。
  • ACCOUNTID:字符串 - 用戶的用戶名
  • 創建:DATATIME - 當密碼重置創建的時間戳

流程如下:在網站

  1. 用戶要求密碼重置。
  2. 在PasswordresetRequest表中創建一條新記錄。
  3. 將帶密碼重置頁面鏈接的郵件以密碼請求標識作爲請求參數發送給用戶。
  4. 用戶點擊電子郵件中的鏈接,將他發送到密碼重置頁面。
  5. 如果從請求參數中的數據庫中提取密碼請求。如果可以找到請求或者請求不比例如12小時向用戶呈現表格,以便他可以輸入新密碼。

這很容易實現,對於大多數網站來說足夠安全。

+0

寫得很好,謝謝 – Kjensen 2011-07-22 16:12:02

1

有很多方法可以做到這一點。如果您的主要擔心是安全性,一種方法可能是發送一個鏈接,其中包含一個guid參數,您可以在您的最終(在數據庫表,文件或任何適合您的用戶)中創建和存儲該參數以及與其關聯的用戶標識。當密碼重置請求進入時,您檢查guid並查看您的db/file/whatever中是否有一個匹配值,並繼續進行密碼重置。不要忘記從存儲中刪除GUID以防止多次使用相同的鏈接。

相關問題