Android(安卓)安全 —— 本地拒绝服务漏洞
16lz
2022-03-05
概述
Activity / Service / BroadcastReceiver / ContentProvider 的 export 设置为 true 时,攻击者可以向这些组件发送畸形 Intent 。
危害
攻击者可以轻易地向Activity等发送自己的 Intent ,如果 Intent 携带空数据,或则畸形数据等,如果 Activity 内部处理接收到的 Intent 没有进行格式格式校验或者异常捕获,造成程序崩溃。
class DemoActivity extends BaseActivity { @Override protected void onCreate(@Nullable Bundle savedInstanceState) {Intent data =getIntent();String name = data.getStringExtra("name");// 攻击者发送 data == null 时,会造成程序 NullPointer }}
防范
- 仅仅程序内部使用的 Activity 等设置 export 为 false
- 处理 Intent 数据时,进行 try-catch 防止数据格式异常
class BaseReceiver extends BroadcastReceiver{public final void onReceive(Context context, Intent intent){if( context != null && intent != null) {try {String action = intent.getAction();if("com.demo.test".equlals(action)){String name = intent.getStringExtra("name");//...}}catch(Throwable t){t.printStackTrace();return;}}}}
- 如果export为true,添加permission安全字段
更多相关文章
- 简单的三方登录SDK示例,Android(安卓)Activity之间数据的传递
- JSONArray的使用
- Android数据库操作查询中Cursor类的问题
- Android(安卓)客户端发送邮件(JMail方式)
- Android联系人数据库全解析(3)
- Android联系人数据库全解析(4)
- 使用NDK开发SQLite3
- Android开发之数据保存技术(一)
- mybatisplus的坑 insert标签insert into select无参数问题的解决