缺陷案例(一)

日常工作中會(huì)有些容易被忽視的缺陷,如在權(quán)限、健壯性、安全性等如以下幾個(gè)場景:

*權(quán)限——瀏覽器直接訪問url

*健壯性——多個(gè)用戶同時(shí)對(duì)一條記錄進(jìn)行操作

? ? ? ? ? ? ——接口在并發(fā)時(shí)候的健壯性

*安全性——交易交口是否有sign簽名參數(shù)

? ? ? ? ? ? ——多次登錄失敗后是否有防御機(jī)制

? ? ? ? ? ? ——登錄賬號(hào)為手機(jī)號(hào)的系統(tǒng)接口接口是否會(huì)暴露用戶庫


權(quán)限-瀏覽器直接訪問URL

有時(shí)候開發(fā)只考慮到正常登錄后的權(quán)限,而忽略直接訪問URL的情況,包括未登錄直接訪問url地址和已登錄無權(quán)限訪問URL地址。

操作:

step1:登錄頁面后摘錄所有的URL地址,包括通過超鏈接跳轉(zhuǎn)的子頁面;

step2:在未登錄系統(tǒng)的瀏覽器上,直接粘貼摘錄的鏈接到url地址;

step3:在已登錄無頁面權(quán)限賬號(hào)的瀏覽器上,直接粘貼摘錄到url地址;

預(yù)期:

result1:跳轉(zhuǎn)到登陸頁面

result2:給予無權(quán)限提示


健壯性-多個(gè)用戶同時(shí)對(duì)一條記錄進(jìn)行操作

工作中,經(jīng)常會(huì)發(fā)現(xiàn)開發(fā)對(duì)多個(gè)用戶同時(shí)對(duì)一條記錄進(jìn)行操作的情況,沒有做約束,尤其是有狀態(tài)變更的場景,如用戶A對(duì)記錄進(jìn)行編輯,用戶B此時(shí)對(duì)該記錄進(jìn)行刪除,用戶A再進(jìn)行操作,這種情況下很可能被刪除的記錄又被“復(fù)活”。

操作:

step1:用戶A對(duì)記錄進(jìn)行編輯,并保留在編輯頁面;

step2:用戶B對(duì)該記錄進(jìn)行刪除;

step3:再使用用戶A繼續(xù)編輯,并保存動(dòng)作;

預(yù)期:

result1:用戶B操作時(shí),給予友好提示,并且不可刪除

result2:用戶A操作保存時(shí),提示已經(jīng)刪除


健壯性-接口在并發(fā)時(shí)的健壯性

工作中,曾經(jīng)遇到一個(gè)缺陷。有一個(gè)退款接口,并發(fā)請(qǐng)求時(shí),余額會(huì)被扣成負(fù)數(shù)。這并不是性能問題,而是接口的健壯性很差。在實(shí)際業(yè)務(wù)場景上不會(huì)發(fā)生,但是很可能被惡意用戶用Fiddler獲取接口參數(shù)后,產(chǎn)生異常數(shù)據(jù),甚至獲利(如果是充值接口存在此缺陷呢?)。

具體做法:

  step1. 開啟Fildder抓包工具。

  step2. 使用系統(tǒng)完成一筆業(yè)務(wù)操作。(選擇你認(rèn)為會(huì)改寫系統(tǒng)內(nèi)數(shù)據(jù)的接口)

  step3. 在Fiddler中查看該操作請(qǐng)求的url地址和參數(shù)。

  step4. 使用Jmeter,在Sampler中填入url和參數(shù),進(jìn)行大量并發(fā)請(qǐng)求。

  step5. 查看Jmeter中監(jiān)聽器、系統(tǒng)內(nèi)相關(guān)記錄頁面、系統(tǒng)日志來檢查是否產(chǎn)生了異常數(shù)據(jù)。

預(yù)期:

  result:無任何異常數(shù)據(jù)產(chǎn)生。

思考:接口測試基于惡心用戶獲取也能獲取到信息來測試


安全性-交易接口是否有sign簽名參數(shù)

有人說FD(fiddler)擼東西,1分錢買什么啦,有些電商網(wǎng)站和app對(duì)創(chuàng)建訂單接口沒有sign簽名參數(shù),這會(huì)導(dǎo)致用戶改了金額后可以被服務(wù)器接收,簽名的作用在于將請(qǐng)求中的參數(shù)按某種形式排列后加鹽再加密,然后作為參數(shù)一起發(fā)出。

具體做法:

  step1. 開啟Fildder抓包工具,開啟breakpoints - before requests。

  step2. 使用系統(tǒng)發(fā)起一筆交易操作。

  step3. 在Fiddler中找到該請(qǐng)求,修改其金額后,點(diǎn)擊run to completion。

  step4. 在Fiddler中查看響應(yīng)結(jié)果。

預(yù)期:

  result: 訂單創(chuàng)建失敗,給予友好提示,例如”訂單異常”。


安全性-多次登錄失敗后是否有防御機(jī)制

在網(wǎng)頁上登錄,會(huì)使用驗(yàn)證碼,但是app上由于驗(yàn)證碼輸入麻煩,并不多見。但是仍然應(yīng)該在一定登錄次數(shù)失敗后,出現(xiàn)驗(yàn)證碼或者凍結(jié)30秒防御機(jī)制。如果沒有防御機(jī)制,如果沒有防御機(jī)制,那么惡意人員就會(huì)用密碼字典對(duì)賬號(hào)嘗試強(qiáng)破。

具體做法:

  step1. 使用手機(jī)APP進(jìn)行登錄操作,填入正確帳號(hào)和錯(cuò)誤密碼。重復(fù)10次。

  step2. 查看每一次的登錄失敗的提示信息。

預(yù)期:

  result: 登錄一定次數(shù)后,提示”請(qǐng)輸入驗(yàn)證碼”或者”登錄次數(shù)過多,請(qǐng)30秒后重試”。


安全性-登錄賬號(hào)是手機(jī)號(hào)時(shí)是否會(huì)暴露用戶庫

遇到一個(gè)app,在登錄和注冊(cè)時(shí),對(duì)沒有注冊(cè)的手機(jī)號(hào),有友好提示。這并無不妥,但是手機(jī)號(hào)是純數(shù)字的,這很容易進(jìn)行大量參數(shù)遞增請(qǐng)求,惡意 人員對(duì)11位手機(jī)號(hào)遞增循環(huán)來進(jìn)行請(qǐng)求,從響應(yīng)內(nèi)容中篩選出系統(tǒng)注冊(cè)用戶。

具體做法:

  step1. 閱讀接口文檔,在不需要登錄的接口中,查找有可能會(huì)暴露識(shí)別信息的接口。(如注冊(cè)/ 登錄等)

  step2. 使用Fiddler抓包工具,獲取注冊(cè)接口的url地址和參數(shù)。

  step3. 使用Jmeter,在Sampler中填入url和參數(shù)(正確手機(jī)號(hào)和錯(cuò)誤密碼),進(jìn)行1次請(qǐng)求。

  step4. 使用Jmeter,在Sampler中填入url和參數(shù)(錯(cuò)誤手機(jī)號(hào)),進(jìn)行1次請(qǐng)求。

  step5. 查看Jmeter中監(jiān)聽器。

預(yù)期:

 ? ? result?:無法從響應(yīng)內(nèi)容中分辨是不是系統(tǒng)注冊(cè)用戶。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容