APP安全检测组件安全,报下面这个问题:
Activity拒绝服务检测(中风险)
开发者为方便调用,会把Activity组件设置为导出状态。Android组件之间采用Intent来传递数据,如果Intent接收方没有对Intent的畸形数据进行异常捕获,攻击者可以通过构造附有畸形数据的Intent,导致APP崩溃,触发拒绝服务漏洞。
测试过程
使用drozer查看导出的组件
run app.activity.info -a com.xxx.xxx
执行测试语句后app出现自动退出重启的情况,导致app工作不正常。
修复建议
1、将不必要导出的组件调整为不导出:
<activity android:name="***Activity" android:exported="false">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
</intent-filter>
</activity>
2、建议处理通过Intent.getXXXExtra()获取的数据时进行以下判断,以及用try catch方式进行捕获所有异常,以防止应用出现拒绝服务漏洞:
1) 空指针异常;
2) 类型转换异常;
3) 数组越界访问异常;
4) 类未定义异常;
5) 其他异常;
APP就3个Activity,其他两个都是设置了android:exported="false",就一个WelcomeActivity是启动页面,按照修复建议,改成exported="false",桌面点击图标会显示应用未安装,我查资料启动页面必须是要暴露出来的吧。还有整个APP都没有用到Intent.getXXXExtra() 这些方法获取数据,就一个欢迎页等3秒跳转到登录页,它这第二点都不知道要在哪改。求各位大佬有这种修改经验的指点一下
android:exported="false"
这个属性是禁止三方启动的
下面这个是APP的主入口肯定必须是android:exported="true"
<intent-filter>
</intent-filter>
而且这个exported默认是false值的,只有你添加了<intent-filter>这个值才会是默认true,这个时候你就要考虑是否这个注册的组件可以共享,不可以的话android:exported="false"