【軟體測試】如何進行APP安全性測試
通常我們隊APP所進行的安全性測試包含以下幾個模塊:安裝包安全性、數據安全性、軟鍵盤劫持、賬戶安全性、通信安全性、備份檢查等。下面針對每個模塊我們詳細說明具體的測試方法。
安裝包安全性
1、反編譯
目的是為了保護公司的知識產權和安全方面的考慮等,一些程序開發人員會在源碼中硬編碼一些敏感信息,如密碼。而且若程序內部一些設計欠佳的邏輯,也可能隱含漏洞,一旦源碼泄漏,安全隱患巨大。
為了避免這些問題,除了代碼審核外,通常開發的做法是對代碼進行混淆,混淆後源代碼通過反軟體生成的源代碼是很難讀懂的。
測試中,我們可以直接使用反編譯工具(Android端使用dex2jar和jd-gui工具,iOS端使用Hopper Disassembler、otool、ida pro等)查看源代碼,判斷是否進行了代碼混淆,包括顯而易見的敏感信息。
2、簽名
這點IOS可以不用考慮,因為APP stroe都會校驗。但Android沒有此類權威檢查,我們要在發布前校驗一下簽名使用的key是否正確,以防被惡意第三方應用覆蓋安裝等。可使用下列命令檢查:
jarsigner -verify -verbose -certs apk包路徑
若結果為「jar 已驗證」,說明簽名校驗成功。
3、完整性校驗
為確保安裝包不會在測試完成到最終交付過程中因為某些原因發生文件損壞,需要對安裝包進行完整性校驗,通常做法是檢查文件的md5值。
數據安全性
1、資料庫
資料庫是否存儲敏感信息,某些應用會把cookie類數據保存在資料庫中,一旦此數據被他人獲取,可能造成用戶賬戶被盜用等嚴重問題,測試中在跑完一個包含資料庫操作的測試用例後,我們可以直接查看資料庫里的數據,觀察是否有敏感信息存儲在內。一般來說這些敏感信息需要用戶進行註銷操作後刪除。如果是cookie類數據,建議設置合理的過期時間。
2、日誌
日誌是否存在敏感信息,一般開發在寫程序的過程中會加入日誌幫助高度,所有可能會寫入一些敏感信息,通常APP的發布版不會使用日誌,但也不排除特殊情況。
3、配置文件
配置文件是否存在敏感信息,與日誌類似,我們需要檢查配置文件中是否包含敏感信息。
軟鍵盤劫持
如果用戶安裝了第三方鍵盤,可能存在劫持情況,對此,我們在一些特別敏感的輸入地方可以做檢查,例如金融類APP登錄界面的用戶名密碼輸入框等,看是否支持第三方輸入法,一般建議使用應用內的軟鍵盤。
賬戶安全性
1、秘鑰存儲
密碼是否明文存儲在後台資料庫。
2、秘鑰傳輸
密碼傳輸是否加密,測試中我們需要查看密碼是否被明文傳輸,如果是HTTPS介面,我們可以使用Fiddler等工具直接查看。
3、防暴力破解
賬戶鎖定策略。對於用戶輸入錯誤密碼次數過多的情況,是否會將賬戶臨時鎖定,避免被暴力破解。
4、多端登錄
同時會話情況。一些應用對同時會話會有通知功能,這樣至少可以讓用戶知識他的賬戶可能已經被泄漏了。在一定程度上能免提升用戶體驗。
5、註銷機制
在客戶端註銷後,我們需要驗證任何的來自該用戶的,需要身份驗證的介面調用都不能成功。
通信安全性
1、安全連接
關鍵連接是否使用安全通信,例如HTTPS。在獲知介面設計後我們需要評估是否其中內容包含敏感信息,如果未使用安全通信,需要知會開發修改。
2、數字證書
是否對數字證書合法性進行驗證。即便使用了安全通信,例如HTTPS,我們也需要在客戶端代碼中對服務端證書進行合法性校驗。測試中可以使用Fiddler工具模擬中間人攻擊方法。如果客戶端對於Fiddler證書沒有校驗而能正常調用,則存在安全隱患。
備份檢查
只需在Android端檢查,使用adb backup命令檢查應用是否允許備份數據。
以上是小編總結的APP安全性測試的相關關注點,歡迎感興趣的朋友們交流
推薦閱讀:
※HTTP協議中的COOKIE機制簡單理解
※2018千鋒教育最新軟體測試學習路線圖
※2. 掀起介面測試的蓋頭-HTTP 初窺 (一)
※認識介面測試
※關於PWA(Progressive Web App)的一些測試思考