標籤:android android應用 安全 security 移動
原文地址: http://www.javacodegeeks.com/2014/05/simple-tips-to-secure-android-app.html
http://developer.android.com/training/articles/security-tips.html
Android已經具有內建到作業系統的安全功能,顯著降低應用安全問題的頻次和影響,但作為應用程式開發人員,我們也需要注意在開發應用程式時的安全問題. 安全層級是取決於應用程式的類型和域. 這裡有我們需要注意的一些潛在的安全問題,我已經收集到了這篇文章中.
在這裡我列出來在開發應用中需要保護應用程式最常見的一些事項:
1.不要把私人或敏感性資料儲存在SD卡。要儲存在內部儲存的檔案,請使用以下的模式(Context.MODE_PRIVATE)openFileOutput&openFileInput方法。如果你真的想將資料存放區在SD卡,然後對它進行加密使用.
2.通過標識exported flag 為false限制ContentProvider的使用,當然並不一定每個應用中都這樣使用,只是在沒有與其他應用互動的情況下要標識為false.
3.限制的WebView來訪問本機資料。 HTML5和相關技術已經普遍應用在移動Web應用程式或混合型(Hybird)應用程式。對於Hybrid採用的WebView從本機存放區顯示的HTML或從伺服器擷取HTML和的其他內容。對於webview重大安全問題是setAllowFileAccess()和setAllowContentAccess()方法.
4.通過BroadCastReceiver和Intent不傳遞敏感資訊。使用LocalBroadcastManager的進程內/應用程式的廣播資料傳遞。 使用LocalBroadcastManager需要supportv4.jar.
5.不要在LogCat中列印敏感資訊。喜歡的使用者名稱,密碼,Web服務的URL,請求或響應資訊等細節.
6.在應用上線前去除沒有必要的log日誌
7.不接收處理一些惡意偽造的Intent.在之前的BroadcastReceiver的方法的OnReceive()方法中收到的Intent,驗證調用者的包名,動作等資訊。
8.給Service加上對應的自訂許可權.如果只有自己的應用使用時可以加上 exported = false(同ContentProvider).
9.限制Activity的訪問,.如果只有自己的應用使用時可以加上 exported = false.
10.應用發布之前確保debug mode 為false.
11.對於跨應用程式的功能,應用程式響應之前驗證調用.
12.伺服器驗證方面可以使用基於Https的訪問.
13.當你覺得某些變數或者方法在Java層容易破解的時候,可以把對應變數改為用JNI的方式去擷取
14.使用ProGuard 檔案混淆代碼
15.移除from AndroidManifest.xml中不必要的許可權.
16.慎用DexClassLoader 載入應用程式之外的dex檔案.