忘記密碼功能的安全實現(郵件方式)

發表是最好的記憶發表於2013-08-18

最近在做P2P網貸系統,由於對安全的要求比較高,因此做每一步都比較小心,考慮再三。

在做忘記密碼功能時考慮到郵箱連結的安全性,去網上參考下別人的意見,查詢後發現許多網站的這個功能都存在漏洞,如:

手機方式:http://www.wooyun.org/bugs/wooyun-2010-018055    

郵件方式:http://www.2cto.com/Article/201305/215934.html

     http://www.wooyun.org/bugs/wooyun-2013-017322

嚇到了吧,所以任何小的功能稍加不注意,可能就是一個大的漏洞

我的解決方案:(有不同意見的可以馬上噴):

1.儲存資料庫是必須的,先建資料庫表用來儲存每次傳送的資訊,表結構如下

編號:就是與某個使用者進行關聯,標註是哪個使用者點選了忘記密碼(在傳送郵件前肯定有叫使用者輸入資訊如使用者名稱,郵箱地址),這樣我們就能鎖定該使用者了

過期時間:就是設定郵件在多少時間內有效

隨機md5值:是用來唯一標註郵件連結的,可以生成時間戳然後用md5進行加密

型別:用來區分不同的連結,看你自己的需要

2.使用者點選忘記密碼後,我們需要他們輸入使用者名稱,郵箱地址來進行使用者的認證,如果認證正確則向該使用者傳送一封重置密碼的連結郵件,並將資訊存入到該表中:

如下:

3.使用者點選後重置密碼後,程式進行驗證,通過vcode和email到記錄表中進行查詢,如果存在表示該連結有效,

如果驗證正確了就顯示重置密碼頁面,重置成功後將那個記錄進行刪除(也可以新增一個欄位來標註使用者點選連結的次數,控制超過幾次後就將過期)

相關文章