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安全性測試的相關關注點,而實際上APP逆向是一個專項性的課題,往往會交給專職的逆向工程師進行更深入的安全性相關的把控,這裡就不再深入,歡迎感興趣的朋友們交流