在對客戶網(wǎng)站以及APP進(jìn)行安全檢測的同時,我們SINE安全對驗證碼功能方面存在的安全問題,以及驗證碼漏洞檢測有著十多年的經(jīng)驗,在整個APP,網(wǎng)站的安全方面,驗證碼又分2種,第一個是登陸的身份驗證碼,再一個對重要的操作進(jìn)行的操作驗證碼,雖然從名字上都是驗證碼,但這兩種所包含的內(nèi)容是不一樣的。
登陸身份驗證碼的功能是用來判斷當(dāng)前賬戶登陸是否是賬戶者本身,簡單來說是判斷是否是賬戶的擁有者,用驗證碼來效驗,用戶注冊賬號的時候都會填寫手機(jī)號,那么手機(jī)號就作為身份唯一的證明,通過接收短信驗證碼來登陸網(wǎng)站,以及APP。重要操作方面的驗證碼,比如一些資金,提現(xiàn),轉(zhuǎn)幣,充值,修改銀行卡,牽扯資金類的重要操作,含有這個修改密碼等等的屬于操作類型的驗證碼,為的是防范別人盜用賬戶,對賬戶進(jìn)行篡改,給賬戶擁有者帶來損失,把握風(fēng)控。
這兩種驗證碼的功能都不一樣,所以在對APP,網(wǎng)站進(jìn)行安全檢測的同時,查找出來的漏洞,以及發(fā)生的安全問題,都不一樣。我們SINE安全工程師在對其他客戶平臺,APP進(jìn)行測試總結(jié)下來的經(jīng)驗,來跟大家講將驗證碼安全上的問題。
使用驗證碼為的就是提高APP安全,網(wǎng)站的安全性能,解決網(wǎng)站賬戶被暴力破解,頻繁的API訪問,重要操作上的驗證碼二次確認(rèn),防止惡意操作導(dǎo)致用戶賬戶本身受損失,這些安全方面,都是為了區(qū)別開軟件與人工,當(dāng)用戶被暴力破解,一般都是采用軟件進(jìn)行攻擊操作,包括頻繁的訪問某一個API接口,也都是由軟件實施,人工根本不可能實現(xiàn)。驗證碼安全檢測,主要從以下幾個方面進(jìn)行測試:
驗證碼是否可以重復(fù)利用,驗證碼是否可被軟件ocr文字自動識別,驗證碼是否被可以被繞過,驗證碼在一分鐘內(nèi)是否有數(shù)量的安全限制,驗證碼的生成規(guī)則是否可逆,輸入驗證碼出錯的次數(shù)是否會開啟二次安全驗證,根據(jù)近10年的安全測試經(jīng)驗,我們SINE安全統(tǒng)計發(fā)現(xiàn)驗證碼被重復(fù)利用,被自動識別這些漏洞是經(jīng)常出現(xiàn)的,下面講一下驗證碼被重復(fù)利用漏洞:
正常來講驗證碼在設(shè)計過程都是與session值進(jìn)行綁定,當(dāng)session產(chǎn)生第一時間,驗證碼也會緊跟其后,也會直接生成與當(dāng)前的session值進(jìn)行雙向的綁定。當(dāng)用戶訪問APP,網(wǎng)站登錄的時候,會自動加載驗證碼,登錄請求到數(shù)據(jù)庫進(jìn)行查詢比對,用戶的賬號密碼是否正常,驗證碼也會判斷是否正確,但這兩個請求是分開來的,一個走數(shù)據(jù)庫,一個走驗證碼,各盡其責(zé)。如果是可以先請求驗證碼,再請求數(shù)據(jù)庫,這就導(dǎo)致安全問題的發(fā)生,APP的開發(fā)人員在設(shè)計的時候大多數(shù)考慮的是驗證碼是否輸入正確,如果正確就通過,而忽略掉了可以調(diào)換業(yè)務(wù)流程的先后順序,要判斷登陸與驗證碼的請求是否同步,在這個細(xì)節(jié)上,導(dǎo)致驗證碼被重復(fù)利用。
我們在測試其他客戶APP,網(wǎng)站的時候,用戶登陸時候先輸入驗證碼,驗證碼通過安全效驗后,直接可以進(jìn)行登陸用戶賬戶與密碼,在這個過程可以導(dǎo)致暴力破解的漏洞產(chǎn)生。
下一篇我們將會分享驗證碼被自動識別漏洞,希望我們的分享能給網(wǎng)站運(yùn)營者與開發(fā)人員一些幫助,當(dāng)在開發(fā)APP,網(wǎng)站驗證碼功能上一定要謹(jǐn)慎,根據(jù)我們分享的安全問題著重測試,并修復(fù)漏洞,完善網(wǎng)站的整體功能。
申請創(chuàng)業(yè)報道,分享創(chuàng)業(yè)好點(diǎn)子。點(diǎn)擊此處,共同探討創(chuàng)業(yè)新機(jī)遇!