2013-06-20 65 views
0

對於密碼恢復,我的vb.net應用程序通過以下格式的鏈接向用戶發送電子郵件。電子郵件用戶新鏈接創建密碼

http://<password-reset page url>?id=<userid>&tpr=<times Password Reset>&time=<time when the link was generated>

Times Password Reset是時間的用戶已經使用一個密碼重置鏈接重置密碼的數量。它是數據庫中的值,查詢字符串中的值是匹配的。爲確保相同的密碼重置鏈接不能重複使用兩次以重置密碼。 Time用於檢查在使用鏈接之前不超過24小時。 和userid用於識別用戶。

如果所有條件都匹配,則會提示用戶更改其密碼。 用AES加密的所有字段。

我想知道這種方法是否安全?

回答

1

快速回答:不可以。

忘記您在URL中使用的所有參數。只需生成一個隨機的,不可猜測的字符串(例如UUID)並將其作爲參數存入URL中。然後通過您爲他儲存的電子郵件地址將該URL發送給用戶。將UUID與您網址中的所有參數一起存儲在您的數據庫中。當用戶點擊鏈接時,驗證所有參數(時間戳等)並讓他設置一個新密碼。

也是OWASP Cheat Sheet on Password Reset

+0

這實際上是一個很好的解決方案,我自己使用它。 +1 – Skindeep2366

相關問題