应用组件攻防
什么是安卓应用组件?
应用组件是组成安卓应用的关键部分。每个应用都是由一个或者多个组件组成,并且每个都是单独调用。这里主要分为4个主要的组件,介绍如下:
Activity: 是一个应用程序组件,提供一个屏幕,用户可以用来交互为了完成某项任务(例如打电话,发短信等)
Service(服务): 在后台提供持续性服务,并不需要一个用户界面
Content Providers(内容提供者): 以表格的形式把数据展现给外部的应用。换句话来说Content Providers可以被认为是连接两个处理器的之间的接口。
Broadcast Receivers(广播接收器): 广播接收器是一个接受系统级广播的组件,(例如电量低,重启,耳机插入等)尽管大部分广播都是由系统发出,应用本身也可以发起广播。
漏洞
例子 ActivityA 中 输入密码 正确 进入 ActivityB
反编译 获取 ActicityB 的包名 直接启动页面 就跳过 ActivityA 中密码校验
预防
android:exported
这个属性用于指示该服务是否能够被其他应用程序组件调用或跟它交互。
如果设置为true,则能够被调用或交互,否则不能。
设置为false时,只有同一个应用程序的组件或带有相同用户ID的应用程序才能启动或绑定该服务。
它的默认值依赖与该服务所包含的过滤器。
没有过滤器则意味着该服务只能通过指定明确的类名来调用,
这样就是说该服务只能在应用程序的内部使用(因为其他外部使用者不会知道该服务的类名),
因此这种情况下,这个属性的默认值是false。
另一方面,如果至少包含了一个过滤器,则意味着该服务可以给外部的其他应用提供服务,因此默认值是true。
这个属性不是限制把服务暴露给其他应用程序的唯一方法。还可以使用权限来限制能够跟该服务交互的外部实体。
原文
中国