日常工作中會有些容易被忽視的缺陷,如在權(quán)限、健壯性、安全性等如以下幾個場景:
*權(quán)限——瀏覽器直接訪問url
*健壯性——多個用戶同時對一條記錄進(jìn)行操作
? ? ? ? ? ? ——接口在并發(fā)時候的健壯性
*安全性——交易交口是否有sign簽名參數(shù)
? ? ? ? ? ? ——多次登錄失敗后是否有防御機制
? ? ? ? ? ? ——登錄賬號為手機號的系統(tǒng)接口接口是否會暴露用戶庫
權(quán)限-瀏覽器直接訪問URL
有時候開發(fā)只考慮到正常登錄后的權(quán)限,而忽略直接訪問URL的情況,包括未登錄直接訪問url地址和已登錄無權(quán)限訪問URL地址。
操作:
step1:登錄頁面后摘錄所有的URL地址,包括通過超鏈接跳轉(zhuǎn)的子頁面;
step2:在未登錄系統(tǒng)的瀏覽器上,直接粘貼摘錄的鏈接到url地址;
step3:在已登錄無頁面權(quán)限賬號的瀏覽器上,直接粘貼摘錄到url地址;
預(yù)期:
result1:跳轉(zhuǎn)到登陸頁面
result2:給予無權(quán)限提示
健壯性-多個用戶同時對一條記錄進(jìn)行操作
工作中,經(jīng)常會發(fā)現(xiàn)開發(fā)對多個用戶同時對一條記錄進(jìn)行操作的情況,沒有做約束,尤其是有狀態(tài)變更的場景,如用戶A對記錄進(jìn)行編輯,用戶B此時對該記錄進(jìn)行刪除,用戶A再進(jìn)行操作,這種情況下很可能被刪除的記錄又被“復(fù)活”。
操作:
step1:用戶A對記錄進(jìn)行編輯,并保留在編輯頁面;
step2:用戶B對該記錄進(jìn)行刪除;
step3:再使用用戶A繼續(xù)編輯,并保存動作;
預(yù)期:
result1:用戶B操作時,給予友好提示,并且不可刪除
result2:用戶A操作保存時,提示已經(jīng)刪除
健壯性-接口在并發(fā)時的健壯性
工作中,曾經(jīng)遇到一個缺陷。有一個退款接口,并發(fā)請求時,余額會被扣成負(fù)數(shù)。這并不是性能問題,而是接口的健壯性很差。在實際業(yè)務(wù)場景上不會發(fā)生,但是很可能被惡意用戶用Fiddler獲取接口參數(shù)后,產(chǎn)生異常數(shù)據(jù),甚至獲利(如果是充值接口存在此缺陷呢?)。
具體做法:
step1. 開啟Fildder抓包工具。
step2. 使用系統(tǒng)完成一筆業(yè)務(wù)操作。(選擇你認(rèn)為會改寫系統(tǒng)內(nèi)數(shù)據(jù)的接口)
step3. 在Fiddler中查看該操作請求的url地址和參數(shù)。
step4. 使用Jmeter,在Sampler中填入url和參數(shù),進(jìn)行大量并發(fā)請求。
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對創(chuàng)建訂單接口沒有sign簽名參數(shù),這會導(dǎo)致用戶改了金額后可以被服務(wù)器接收,簽名的作用在于將請求中的參數(shù)按某種形式排列后加鹽再加密,然后作為參數(shù)一起發(fā)出。
具體做法:
step1. 開啟Fildder抓包工具,開啟breakpoints - before requests。
step2. 使用系統(tǒng)發(fā)起一筆交易操作。
step3. 在Fiddler中找到該請求,修改其金額后,點擊run to completion。
step4. 在Fiddler中查看響應(yīng)結(jié)果。
預(yù)期:
result: 訂單創(chuàng)建失敗,給予友好提示,例如”訂單異?!?。
安全性-多次登錄失敗后是否有防御機制
在網(wǎng)頁上登錄,會使用驗證碼,但是app上由于驗證碼輸入麻煩,并不多見。但是仍然應(yīng)該在一定登錄次數(shù)失敗后,出現(xiàn)驗證碼或者凍結(jié)30秒防御機制。如果沒有防御機制,如果沒有防御機制,那么惡意人員就會用密碼字典對賬號嘗試強破。
具體做法:
step1. 使用手機APP進(jìn)行登錄操作,填入正確帳號和錯誤密碼。重復(fù)10次。
step2. 查看每一次的登錄失敗的提示信息。
預(yù)期:
result: 登錄一定次數(shù)后,提示”請輸入驗證碼”或者”登錄次數(shù)過多,請30秒后重試”。
安全性-登錄賬號是手機號時是否會暴露用戶庫
遇到一個app,在登錄和注冊時,對沒有注冊的手機號,有友好提示。這并無不妥,但是手機號是純數(shù)字的,這很容易進(jìn)行大量參數(shù)遞增請求,惡意 人員對11位手機號遞增循環(huán)來進(jìn)行請求,從響應(yīng)內(nèi)容中篩選出系統(tǒng)注冊用戶。
具體做法:
step1. 閱讀接口文檔,在不需要登錄的接口中,查找有可能會暴露識別信息的接口。(如注冊/ 登錄等)
step2. 使用Fiddler抓包工具,獲取注冊接口的url地址和參數(shù)。
step3. 使用Jmeter,在Sampler中填入url和參數(shù)(正確手機號和錯誤密碼),進(jìn)行1次請求。
step4. 使用Jmeter,在Sampler中填入url和參數(shù)(錯誤手機號),進(jìn)行1次請求。
step5. 查看Jmeter中監(jiān)聽器。
預(yù)期:
? ? result?:無法從響應(yīng)內(nèi)容中分辨是不是系統(tǒng)注冊用戶。