银行类app如何保证安全性
做個幾個銀行類的app,他們對app安全的要求都比較高,這篇文章整理一些日常開發中的安全性處理注意的地方。
##sharedPreference
很多app在使用sharedpreferece儲存個人數據,然后這部分儲存是不安全的。
1.創建模式要正確MODE_PRIVATE。
因為如果是使用MODE_WORLD_READABLE創建的sharedpreference文件其他app是可以讀取到的。如果是使用MODE_WORLD_WRITEABLE創建的sharedpreferece,雖然其他app是不能讀取到,但是是可以通過獲取跟你app相同的sharedUserId從而讀取該文件的內容。
root權限下的用戶不管哪種模式都可以讀取到sharedpreferece里面的信息。
2.如果需要進程間數據共享,可考慮content provider。
3.盡量避免將密碼等敏感數據信息明文存儲在Shared Preferences中。
##網絡傳輸
1.對敏感信息進行對稱加密。如3Des,RSA加密。
2.不建議對整個傳輸的報文進行加密,因為數據量比較大,可對請求數據進行單向加密,生成一個sign,然后上傳到服務端,讓服務端進行同原文的比對。驗證數據有沒有被篡改。
3.在物理傳輸層可使用https的傳輸方式來替代http協議。HTTPS 是 HTTP 的安全版本,為什么這么說呢?因為HTTPS 自帶加密、驗簽、檢查數據完整性等功能,它在 HTTP 下加入了 SSL (Secure Socket Layer),SSL 位于 TCP/IP 和 HTTP 協議之間,負責加密、驗簽、檢查數據完整性工作
##其他
1.本地文件敏感數據不能保存,如要要保存,必須進行加密,加密算法不能是偽加密,比如Base64加密。
2.對于存在本地的密鑰,可使用jni保存到so文件里面。
3.apk打包要進行簽名和混淆處理。
4.日志打印要進行控制。
5.頁面跳轉做app防劫持處理。
##app加固
有一些第三方的公司專門對app做加固操作,防止應用被逆向分析,反編譯,二次打包。
或者使用360提供的免費加固等。
##防止界面劫持
在android系統中,程序可以枚舉當前運行的進程而不需要聲明任何權限,如果攻擊者注冊一個receiver,響應android.intent.action.BOOT_COMPLETED,使得開啟啟動一個service;在這個service中啟動一個計時器,不停枚舉當前進程中是否有預設的進程啟動,如果發現有預設進程,則使用FLAG_ACTIVITY_NEW_TASK啟動自己的釣魚界面,而正常應用的界面則隱藏在釣魚界面的后面。
防止劫持的辦法是啟動一個Service(在頁面onCreate的時候去啟動這個服務),然后判斷當前頁面的包名和系統棧頂頁面的包名是否一致,如果不一致的話有可能被劫持的風險,則app給出相應的提示或者跳轉到相應的頁面。
總結
以上是生活随笔為你收集整理的银行类app如何保证安全性的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Pacman基本使用
- 下一篇: 使用Python获取股票的基金持仓数据