2017-02-23 128 views
0

我正在執行密碼重置功能。只有管​​理員才能在不知道當前密碼(或新用戶)的情況下重置某人的密碼。密碼重置邏輯

管理員將點擊重置密碼,該密碼將生成40個字符的標記。 令牌將被加密並存儲在數據庫中,然後非哈希令牌將通過電子郵件發送給用戶/ resetPassword/tok =?

一旦用戶點擊鏈接,令牌必須被驗證。我只是想知道如何從鏈接驗證令牌。 我知道如何檢查它是否已被使用,或者是否已過期(48小時)。但你如何驗證它是來自該用戶的電子郵件?

謝謝!

回答

0

你無法知道URL是如何被調用的。這可能是由用戶點擊電子郵件中的鏈接發生的,也可能是由黑客/機器人生成的,並由軟件或工具提交。

您可以做的是確保您用作目標的電子郵件已通過驗證。大多數Web應用程序都以用戶身份在激活用戶帳戶之前驗證其電子郵件帳戶(電子郵件發送給用戶,帶有令牌和用戶標識並且用戶單擊了電子郵件中提供的URL)。這是您知道電子郵件實際上屬於用戶的方式。

當然,您生成的每個令牌都與預期的用戶ID一起保存在表中。您的代幣也可能有失效日期。

本博客文章是用於確保用戶登錄一個很好的參考,我強烈推薦:

https://www.troyhunt.com/everything-you-ever-wanted-to-know/