短信驗證碼&動態(tài)口令(二次驗證碼)
短信驗證碼的發(fā)送使用的是阿里云的短信服務(wù)袭艺;動態(tài)口令使用的谷歌的動態(tài)口令算法,且需要用戶下載谷歌的“身份驗證器”APP配合使用蕊梧。
1.使用的技術(shù)
? 項目整體使用SSM框架
? 用戶在頁面上點擊發(fā)送驗證碼時岭埠,通過ajax獲取后臺數(shù)據(jù),后臺通過隨機生成驗證碼的函數(shù)生成驗證碼世舰。并將生成的驗證碼傳遞給redis(相比于session傳遞值,redis傳遞減少被截獲的風(fēng)險)槽卫,由redis控制驗證碼有效期跟压,在用戶輸入驗證碼并點擊下一步的時候,也是通過ajax進行前后端數(shù)據(jù)交換歼培,后端判斷驗證碼正確與否返回控制信息給前端震蒋,若錯誤則繼續(xù)輸入,正確則跳轉(zhuǎn)到目標頁面躲庄。
動態(tài)口令是非常重要的安全軟件查剖,基本上我們在國內(nèi)使用到的各大金融平臺的賬戶都是可以使用到。畢竟現(xiàn)在網(wǎng)絡(luò)上的黑客比較多噪窘,而我們多數(shù)人都是網(wǎng)絡(luò)方面的“小白”笋庄,短信驗證碼、郵件驗證碼被截獲倔监;平臺賬戶名+密碼被截獲直砂,甚至支付密碼被截獲、……是不是很可怕浩习?前段時間静暂,我們知道人臉識別被破解,這種永久性和唯一性的生物特征模板數(shù)據(jù)被盜取谱秽,可能會嚴重損害用戶隱私和生物識別系統(tǒng)的安全籍嘹。對銀行和支付寶等系統(tǒng)支付安全產(chǎn)生巨大隱患闪盔。如果真的是想要保障好我們的賬戶安全弯院,那么使用了這樣的二次驗證辱士,自然也可以保障好我們的權(quán)益,避免賬戶出現(xiàn)被盜風(fēng)險等問題听绳。
用戶要使用動態(tài)口令時需要先獲得動態(tài)口令密鑰颂碘,在查看設(shè)置動態(tài)支付口令頁面獲取,該頁面在用戶有密鑰時顯示查看密鑰椅挣,在用戶沒有密鑰時顯示獲取密鑰头岔。圖示為有密鑰時,無密鑰時顯示為:“您還沒有啟用動態(tài)口令鼠证,點擊“申請”啟動付款動態(tài)口令校驗”峡竣。用戶點擊超鏈接后,先進入短信驗證碼驗證環(huán)節(jié)量九,驗證完通過之后适掰,通過查庫確認用戶是否有密鑰,如果用戶沒有密鑰則通過谷歌的創(chuàng)建密鑰方法創(chuàng)建一個密鑰存入數(shù)據(jù)庫荠列,并將密鑰在頁面上顯示类浪;有密鑰則直接顯示。
用戶使用動態(tài)口令需將自己的用戶名與動態(tài)口令密鑰在“身份驗證器”APP中鍵入肌似。
在需要用戶使用動態(tài)口令時费就,前臺通過ajax將用戶輸入的動態(tài)口令傳遞給后端,后端通過request獲取用戶的用戶名川队,通過用戶名查庫得到用戶的密鑰力细,并將用戶的密鑰和用戶輸入的動態(tài)口令傳給谷歌的判斷方法,用戶輸入錯誤則返回錯誤信息固额,正確則跳轉(zhuǎn)到下一個頁面眠蚂。
2.過程中出現(xiàn)的問題:
(1)使用阿里云demo調(diào)試之前也需要先有余額
(2)傳遞給阿里云短信發(fā)送api的驗證碼要是json格式,最開始沒用阿里云的json工具之前用正則寫的json會把驗證碼開頭的0給去掉对雪。
(3)谷歌的只通過密鑰生成動態(tài)口令的方法會因為時間原因出現(xiàn)生成的驗證碼和用戶輸入的存在時間差一直判錯的問題河狐。通過將密鑰和動態(tài)口令一起輸入的方法允許用戶輸入的動態(tài)口令是時間軸當前和之前之后各一個。