通常我們隊APP所進行的安全性測試包含以下幾個模塊:安裝包安全性、數(shù)據(jù)安全性、軟鍵盤劫持、賬戶安全性、通信安全性、備份檢查等。下面針對每個模塊我們詳細說明具體的測試方法。
安裝包安全性
1、反編譯
目的是為了保護公司的知識產(chǎn)權(quán)和安全方面的考慮等,一些程序開發(fā)人員會在源碼中硬編碼一些敏感信息,如密碼。而且若程序內(nèi)部一些設(shè)計欠佳的邏輯,也可能隱含漏洞,一旦源碼泄漏,安全隱患巨大。
為了避免這些問題,除了代碼審核外,通常開發(fā)的做法是對代碼進行混淆,混淆后源代碼通過反軟件生成的源代碼是很難讀懂的。
測試中,我們可以直接使用反編譯工具(端使用和jd-gui工具,iOS端使用 、otool、ida pro等)查看源代碼,判斷是否進行了代碼混淆,包括顯而易見的敏感信息。
2、簽名
這點IOS可以不用考慮,因為APP stroe都會校驗。但沒有此類權(quán)威檢查,我們要在發(fā)布前校驗一下簽名使用的key是否正確,以防被惡意第三方應(yīng)用覆蓋安裝等。可使用下列命令檢查:
- - -certs apk包路徑
若結(jié)果為“jar 已驗證”,說明簽名校驗成功。
3、完整性校驗
為確保安裝包不會在測試完成到最終交付過程中因為某些原因發(fā)生文件損壞,需要對安裝包進行完整性校驗,通常做法是檢查文件的md5值。
數(shù)據(jù)安全性
數(shù)據(jù)庫是否存儲敏感信息app安全性測試點app安全性測試點,某些應(yīng)用會把類數(shù)據(jù)保存在數(shù)據(jù)庫中,一旦此數(shù)據(jù)被他人獲取,可能造成用戶賬戶被盜用等嚴重問題,測試中在跑完一個包含數(shù)據(jù)庫操作的測試用例后,我們可以直接查看數(shù)據(jù)庫里的數(shù)據(jù),觀察是否有敏感信息存儲在內(nèi)。一般來說這些敏感信息需要用戶進行注銷操作后刪除。如果是類數(shù)據(jù),建議設(shè)置合理的過期時間。
2、日志
日志是否存在敏感信息,一般開發(fā)在寫程序的過程中會加入日志幫助高度,所有可能會寫入一些敏感信息,通常APP的發(fā)布版不會使用日志,但也不排除特殊情況。
3、配置文件
配置文件是否存在敏感信息,與日志類似,我們需要檢查配置文件中是否包含敏感信息。
軟鍵盤劫持
如果用戶安裝了第三方鍵盤,可能存在劫持情況,對此,我們在一些特別敏感的輸入地方可以做檢查,例如金融類APP登錄界面的用戶名密碼輸入框等,看是否支持第三方輸入法,一般建議使用應(yīng)用內(nèi)的軟鍵盤。
賬戶安全性
1、秘鑰存儲
密碼是否明文存儲在后臺數(shù)據(jù)庫。
2、秘鑰傳輸
密碼傳輸是否加密,測試中我們需要查看密碼是否被明文傳輸,如果是HTTPS接口,我們可以使用等工具直接查看。
3、防暴力破解
賬戶鎖定策略。對于用戶輸入錯誤密碼次數(shù)過多的情況,是否會將賬戶臨時鎖定,避免被暴力破解。
4、多端登錄
同時會話情況。一些應(yīng)用對同時會話會有通知功能,這樣至少可以讓用戶知識他的賬戶可能已經(jīng)被泄漏了。在一定程度上能免提升用戶體驗。
5、注銷機制
在客戶端注銷后,我們需要驗證任何的來自該用戶的,需要身份驗證的接口調(diào)用都不能成功。
通信安全性
1、安全連接
關(guān)鍵連接是否使用安全通信,例如HTTPS。在獲知接口設(shè)計后我們需要評估是否其中內(nèi)容包含敏感信息,如果未使用安全通信,需要知會開發(fā)修改。
2、數(shù)字證書
是否對數(shù)字證書合法性進行驗證。即便使用了安全通信,例如HTTPS,我們也需要在客戶端代碼中對服務(wù)端證書進行合法性校驗。測試中可以使用工具模擬中間人攻擊方法。如果客戶端對于證書沒有校驗而能正常調(diào)用,則存在安全隱患。
備份檢查
只需在端檢查,使用adb 命令檢查應(yīng)用是否允許備份數(shù)據(jù)。