天天看点

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

解决方法:动态申请相应权限,必要时做出充分使用说明