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


最近在做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到記錄表中進行查詢,如果存在表示該鏈接有效,

如果驗證正確了就顯示重置密碼頁面,重置成功后將那個記錄進行刪除(也可以添加一個字段來標注用戶點擊鏈接的次數,控制超過幾次后就將過期)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM