天天看點

APP部分漏洞及解決方法1. 漏洞-動态注冊Receiver風險2. 漏洞-WebView遠端代碼執行漏洞3. 漏洞-WebView明文存儲密碼漏洞4. 漏洞-RSA加密算法不安全使用風險5. 漏洞-密鑰寫死風險6. 漏洞-資料庫注入漏洞 7. 漏洞-0204

 公司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

解決方法:動态申請相應權限,必要時做出充分使用說明