官方指南
官方文檔:https://developer.android.com/training/articles/security-tips?hl=zh-cn
代碼混淆,APK加殼
敏感數(shù)據(jù)加密
1.運(yùn)行時(shí)數(shù)據(jù)(例如用戶token)需要使用隨機(jī)秘鑰加密。
- 隨機(jī)秘鑰生成:需要為秘鑰生成器提供可靠的初始化參數(shù)(安全隨機(jī)數(shù)),避免離線攻擊。
- 隨機(jī)秘鑰應(yīng)該存放于Android KeyStore,最大限度防止被非法讀取。官方文檔:https://developer.android.com/training/articles/keystore?hl=zh-CN
2.靜態(tài)數(shù)據(jù)(例如 API key / secret )需要用固定秘鑰加密。
- 固定秘鑰存放:so庫中。
- 防止非法讀取:在 so 庫的 C 代碼里 JNI_OnLoad() 方法對 APK 簽名進(jìn)行驗(yàn)證,如果簽名不對,直接 crash。
詳細(xì)參考:https://www.diycode.cc/topics/501
網(wǎng)絡(luò)安全
- https中間人攻擊
- 應(yīng)用中內(nèi)置證書并進(jìn)行校驗(yàn)
- 證書鎖定
- WebView安全:
3.流量挾持
- 使用HttpDNS
參考資料
https://developer.android.com/training/articles/security-tips?hl=zh-cn
https://www.diycode.cc/topics/501
https://zhuanlan.zhihu.com/p/21787366