[英]PHP password recovery
我意識到,為了安全起見,密碼不應該以明文形式存儲在數據庫中。 如果我將它們哈希,我可以驗證它們以用於登錄。
但是,如果我想建立一個密碼恢復系統,那么最好的策略是什么,因為沒有撤消哈希?
有人能給我一個關於存儲和恢復密碼的良好安全策略的簡要概述嗎?
您無法恢復散列的密碼,也不應該。
你應該做的是:
你沒有“恢復”密碼。 你做的是兩件事之一。
我的流程如下。
用戶單擊忘記的密碼鏈接,然后重定向到重置密碼表單,要求他們輸入其注冊的電子郵件地址。
用戶輸入其電子郵件地址后,系統會驗證它是否存在於數據庫中。 如果電子郵件地址有效,則生成令牌並使用用戶憑據存儲在數據庫中。
電子郵件發送到注冊的電子郵件地址,其中包含指向重置表單的鏈接,該鏈接包括2個GET參數,包括令牌和存儲在數據庫中的用戶唯一ID。
用戶單擊鏈接后,將轉到重置表單。 系統從URL檢索2 GET參數並驗證它們是否存在於數據庫中。 如果驗證令牌與用戶存在於數據庫中,則可以向用戶顯示重置密碼表單字段以輸入新密碼。
我建議使用BCrypt(自PHP 5.3起可用)來散列密碼和額外的安全性,或許對令牌使用某種過期,以便在一段時間后不能使用它。
您可以為用戶和md5創建一個新的(並隨機生成的)密碼,然后通過電子郵件發送用戶。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.