公司APP在教育移動網際網路應用程式備案管理平台上收到通報預警,陳列了部分需要解決的漏洞,陳列如下
1. 漏洞-動态注冊Receiver風險
解決方法:
1.在 AndroidManifest.xml 檔案中靜态注冊 BroadcastReceiver,同時設定 exported="false"。
2.必須動态注冊 BroadcastReceiver時,使用registerReceiver(BroadcastReceiver, IntentFilter, broadcastPermission,android.os.Handle)函數注冊。
2. 漏洞-WebView遠端代碼執行漏洞
解決方法:
如果一定要使用addJavascriptInterface接口,需使用以下方法:
1. 設定minSdkVersion值大于或等于17,使應用不能在4.2以下系統上運作。
2. 允許被JavaScript調用的函數必須以@JavascriptInterface進行注解。
3. 漏洞-WebView明文存儲密碼漏洞
解決方法:
建議開發者通過WebView.getSettings().setSavePassword(false)來關閉WebView元件的密碼儲存功能。
4. 漏洞-RSA加密算法不安全使用風險
解決方法:
1.使用RSA算法進行數字簽名時,建議密鑰長不要低于512位,推薦1024位。
2.使用RSA加密時,如果設定工作模式為ECB,建議填充方式為OAEPWithSHA256AndMGF1Padding。
5. 漏洞-密鑰寫死風險
解決方法:
1. 使用算法生成密鑰。
2. 若不使用算法生成密鑰,則使用參數的形式傳遞密鑰,使密鑰與加密算法不在同一函數中
6. 漏洞-資料庫注入漏洞
解決方法:
1. 不必要導出的Provider元件,建議顯示設定元件的“android:exported”屬性為false。如果Provider元件需要與其他APP共享資料或者互動,請對元件進行權限控制和參數校驗。
2. 不要在query中使用拼接字元串形式構造的SQL語句去查詢底層SQLite資料庫,使用selectionArgs進行參數化查詢。 修複代碼示例如下:
selection = "name=?";
String[] selectionArgs = new String[]{et_name.getText().toString()};
cursor = sqldb.query("addressbook", null, selection, selectionArgs, null, null, null, null);
7. 漏洞-0204
描述:
該應用存在濫用權限。 1:android.permission.RESTART_PACKAGES
2:android.permission.CHANGE_WIFI_STATE
3:android.permission.CHANGE_WIFI_MULTICAST_STATE
4:android.permission.BLUETOOTH
5:android.permission.RECORD_AUDIO
6:android.permission.WRITE_SETTINGS
解決方法:動态申請相應權限,必要時做出充分使用說明