前言
現(xiàn)在市面上有多種驗(yàn)證碼類型张症,例如圖形驗(yàn)證碼、滑動(dòng)驗(yàn)證碼鸵贬、語音驗(yàn)證碼吠冤、智力答題驗(yàn)證碼等類型,短信驗(yàn)證碼因其操作性簡單恭理,時(shí)效性強(qiáng)拯辙,安全性高,成本低等優(yōu)點(diǎn)颜价,短信驗(yàn)證碼幾乎成為了所有移動(dòng)產(chǎn)品的標(biāo)配涯保。因此對短信驗(yàn)證碼的機(jī)制進(jìn)行分析,通過了解不同的短信驗(yàn)證碼機(jī)制周伦,我們可以更好地針對其來設(shè)計(jì)測試用例以及測試重點(diǎn)∠Υ海現(xiàn)將目前市面上app的短信驗(yàn)證碼機(jī)制做以下總結(jié)。內(nèi)容包含以下三個(gè)部分:
- 短信驗(yàn)證碼相關(guān)機(jī)制
- 測試短信驗(yàn)證碼的側(cè)重點(diǎn)
- 總結(jié)
短信驗(yàn)證碼相關(guān)機(jī)制
-
驗(yàn)證碼獲取機(jī)制
a. 不同業(yè)務(wù)場景的短信驗(yàn)證碼
對于不同的業(yè)務(wù)場景专挪,雖然發(fā)送短信驗(yàn)證碼的接口是同一個(gè)及志,但是會(huì)區(qū)別不同的短信驗(yàn)證碼發(fā)起類型而進(jìn)行發(fā)送。常見的場景類似于注冊寨腔、忘記密碼速侈、支付等,特別是涉及到用戶個(gè)人敏感信息和資金時(shí)迫卢,為了確認(rèn)用戶本人操作時(shí)倚搬,通常會(huì)使用短信驗(yàn)證碼進(jìn)行二次認(rèn)證。
b. 前后端校驗(yàn):提交Token參數(shù)校驗(yàn)
前端(客戶端)在請求發(fā)送短信的時(shí)候乾蛤,同時(shí)向服務(wù)端提交一個(gè)Token參數(shù)每界,請求中不會(huì)將手機(jī)號等明文參數(shù)直接傳給服務(wù)端。服務(wù)端對這個(gè)Token參數(shù)進(jìn)行校驗(yàn)家卖,校驗(yàn)通過之后眨层,再向請求發(fā)送短信的接口向用戶手機(jī)發(fā)送短信。流程圖如下:
-
驗(yàn)證碼時(shí)間&次數(shù)機(jī)制
以下時(shí)間和次數(shù)限制可以有效對單用戶的短信轟炸和多用戶的短信騷擾兩種攻擊場景進(jìn)行防御上荡。
a. 獲取時(shí)間限制
從發(fā)送驗(yàn)證碼開始趴樱,前端(客戶端)會(huì)進(jìn)行一個(gè)60秒的倒數(shù),在這一分鐘之內(nèi),在該頁面伊佃,用戶是無法提交多次發(fā)送信息的請求的窜司。即使退出頁面,重新再進(jìn)入點(diǎn)擊獲取航揉,會(huì)提示獲取驗(yàn)證碼頻繁塞祈。
b. 次數(shù)限制-連續(xù)獲取,但不校驗(yàn)
對使用同一個(gè)手機(jī)號在進(jìn)行某些場景需要發(fā)送短信驗(yàn)證碼操作時(shí)帅涂,連續(xù)獲取驗(yàn)證碼但不校驗(yàn)议薪,系統(tǒng)可以對該手機(jī)號進(jìn)行限制。達(dá)到設(shè)定次數(shù)提示超過上限媳友,無法獲取斯议。但只能避免人工手動(dòng)刷短信,對于批量使用不同手機(jī)號碼來刷短信的機(jī)器無法進(jìn)行限制醇锚。
c. 次數(shù)限制-連續(xù)獲取哼御,同時(shí)校驗(yàn)
對使用同一個(gè)手機(jī)號在一天內(nèi)獲取驗(yàn)證碼,有個(gè)最大值的限制焊唬。
-
驗(yàn)證碼錯(cuò)誤機(jī)制
對于同一個(gè)手機(jī)號恋昼,如果連續(xù)提交錯(cuò)誤的驗(yàn)證碼,達(dá)到一定次數(shù)赶促,會(huì)導(dǎo)致該手機(jī)號鎖定一段時(shí)間液肌,無法獲取,也無法校驗(yàn)鸥滨。
-
驗(yàn)證碼超時(shí)機(jī)制
每次的短信驗(yàn)證碼是有一定的時(shí)效性嗦哆,超過一定的時(shí)間,校驗(yàn)時(shí)會(huì)提示該驗(yàn)證碼已失效婿滓,需要重新獲取老速。
-
驗(yàn)證碼校驗(yàn)機(jī)制
目前短信驗(yàn)證碼的校驗(yàn)分兩部分,前端通常會(huì)先校驗(yàn)驗(yàn)證碼的格式空幻,位數(shù)等信息烁峭,服務(wù)端會(huì)對前端發(fā)送的內(nèi)容進(jìn)行校驗(yàn)。避免將短信驗(yàn)證碼暴露在返回中秕铛,驗(yàn)證碼只存在服務(wù)端中并不能通過任何api直接獲取。
測試短信驗(yàn)證碼的側(cè)重點(diǎn)
短信驗(yàn)證碼有些功能點(diǎn)由于測試環(huán)境無法測試缩挑,需要在生產(chǎn)環(huán)境著重驗(yàn)證的功能點(diǎn)但两;或者是其功能點(diǎn)在生產(chǎn)環(huán)境驗(yàn)證成本過高,可以放在測試環(huán)境先行驗(yàn)證供置。
-
短信驗(yàn)證碼模板
由于測試環(huán)境不會(huì)真實(shí)發(fā)送短信到手機(jī)上谨湘,所以需要在生產(chǎn)環(huán)境上對短信的發(fā)送和短信模板進(jìn)行測試。
-
短信驗(yàn)證碼校驗(yàn)開關(guān)
目前在測試環(huán)境測試短信驗(yàn)證碼時(shí),由于不是真實(shí)發(fā)送短信驗(yàn)證碼到手機(jī)號上紧阔,所以通常是方便測試坊罢,會(huì)將其校驗(yàn)關(guān)閉,即輸入滿足位數(shù)要求的驗(yàn)證碼即可通過擅耽,或是輸入固定的驗(yàn)證碼便可通過活孩。這便要求在生產(chǎn)環(huán)境需要著重關(guān)注是否有校驗(yàn)短信驗(yàn)證碼。
??若生產(chǎn)環(huán)境沒有打開校驗(yàn)乖仇,不法分子便可以利用此漏洞使用任意手機(jī)號進(jìn)行注冊帳號而從中獲利憾儒。
-
短信驗(yàn)證碼次數(shù)&時(shí)間
在測試環(huán)境可以先對短信驗(yàn)證碼次數(shù)和時(shí)間的閥值進(jìn)行測試,避免在被惡意短信轟炸時(shí)乃沙,沒有達(dá)到防御效果起趾。
-
短信驗(yàn)證碼場景
短信驗(yàn)證碼在整個(gè)app中有不同的應(yīng)用場景,需要對每個(gè)場景的短信驗(yàn)證碼的校驗(yàn)進(jìn)行測試警儒,尤其涉及動(dòng)帳類等場景训裆。
總結(jié)
全面地了解驗(yàn)證碼的機(jī)制,可以更好的幫助我們設(shè)計(jì)測試用例蜀铲,抓住在測試環(huán)境及生產(chǎn)環(huán)境的側(cè)重點(diǎn)缭保,針對性地對短信驗(yàn)證碼進(jìn)行測試,避免不法分子利用短信接口的漏洞進(jìn)行惡意攻擊蝙茶,給公司造成大量的金錢損失艺骂。