公开/封闭属性android:exported引出的Android系统安全技术

简介: 公开/封闭属性android:exported引出的Android系统安全技术android:exported是Android在AndroidManifest.xml里面配置Activity或其他组件如Service或广播等的基础属性,之所以在这里挑出来单独说,是因为该属性现在经常被一些粗糙的安全漏洞扫描系统错误的理解和使用,形成不正确的分析结论。
公开/封闭属性android:exported引出的Android系统安全技术

android:exported是Android在AndroidManifest.xml里面配置Activity或其他组件如Service或广播等的基础属性,之所以在这里挑出来单独说,是因为该属性现在经常被一些粗糙的安全漏洞扫描系统错误的理解和使用,形成不正确的分析结论。
android:exported属性常用以配置一个Android的Activity之间共享数据或互相唤起,以便作为对外共享数据的基础配置之一(之所以说之一,后面还要再说其他共享属性配置),其默认值是false(封闭)。注意!这里所说的默认值是false,是说如果当前Activity没有配置任何<intent-filter>过滤器时候,android:exported才为false,如果当前Activity配置了过滤器<intent-filter>,那么android:exported的默认值是true。这里面还有一个细节问题,是关于不同Android SDK版本也有所不同,在低于SDK 16时候,默认是true,高于SDK 16则默认是false。
android:exported的属性值true或false决定当前App是否对外暴露供其他App程序分享数据,是否可以被手机上安装的其他App唤起。假设手机上安装两个App:A和B。A如果想启动B中的一个ActivityB,那么ActivityB必须配置成android:exported为true才可以。当配置android:exported为true时候,意味着自身App接收来自于手机上的其他App的消息事件,开放状态。
android:exported的属性需要考虑到具体的场景,该属性常被一些大厂使用,比如像腾讯旗下有不少在行业具有极高市场占有率的App,通常用户在安装QQ时候,也会安装微信,也许还会安装腾讯视频,像这样的情况,腾讯可以配置自己App中某些公共Service或者Activity的android:exported为true,然后若干Activity被自家其他App识别并唤起。更何况,要想使用腾讯的一些社交分享组件如分享到微信,分享到朋友圈,分享到QQ这些,就必须配置android:exported为true了。
还是回到两个App:A与B,事实上即便B中ActivityB配置了android:exported为true。A仍然达不到与B共享数据的目的(或A唤起B中ActivityB的目的)。就像前面说的android:exported=”true”只是开始,若想真正实现A与B共享数据,还必须同时设置android:sharedUserId。
当一个App安装到手机上,它就有一个唯一的android:sharedUserId,这个android:sharedUserId伴随App从安装到卸载整个周期。同样的一个App安装到不同的手机上,会具有不同的android:sharedUserId。android:sharedUserId对应的是底层Linux的一个用户。具有相同android:sharedUserId的App可以配置成运行在Linux相同的进程空间中(配置相同android:process)。反之,不具备相同android:sharedUserId的App们,Linux禁止它们互相访问数据。
android:sharedUserId像一个人的身份证一样标识不同的App,如果不同的App像共享数据,在Linux里面,就必须具备android:sharedUserId才可以,做到这一点儿需要两个App在各自的AndroidManifest.xml配置相同的android:sharedUserId。但是一旦两个App设置相同的android:sharedUserId,那么android:exported的属性配置全部失效变得没有意义,从这里可以看到,决定是否共享的重要属性是android:sharedUserId。
而现在一些安全漏洞扫描软件,通过简陋的读取AndroidManifest.xml中定义的Android组件,错误的分析认为没有配置android:exported就是漏洞,殊不知首先需要分析该组件是否配置了过滤器<intent-filter>,如果没有配置<intent-filter>,那么android:exported本身就是false。真正需要配置的当组件配置了<intent-filter>过滤器,此时就要认真配置android:exported这儿,如果打算公开出去,那么就配置为true(其实也不必,因为有了过滤器后,默认就是true),否则false。
相关文章
|
16天前
|
安全 Android开发 数据安全/隐私保护
深入探讨iOS与Android系统安全性对比分析
在移动操作系统领域,iOS和Android无疑是两大巨头。本文从技术角度出发,对这两个系统的架构、安全机制以及用户隐私保护等方面进行了详细的比较分析。通过深入探讨,我们旨在揭示两个系统在安全性方面的差异,并为用户提供一些实用的安全建议。
|
1月前
|
安全 Android开发 iOS开发
Android vs. iOS:构建生态差异与技术较量的深度剖析###
本文深入探讨了Android与iOS两大移动操作系统在构建生态系统上的差异,揭示了它们各自的技术优势及面临的挑战。通过对比分析两者的开放性、用户体验、安全性及市场策略,本文旨在揭示这些差异如何塑造了当今智能手机市场的竞争格局,为开发者和用户提供决策参考。 ###
|
29天前
|
安全 Android开发 iOS开发
安卓与iOS的较量:技术深度对比
【10月更文挑战第18天】 在智能手机操作系统领域,安卓和iOS无疑是两大巨头。本文将深入探讨这两种系统的技术特点、优势以及它们之间的主要差异,帮助读者更好地理解这两个平台的独特之处。
45 0
|
19天前
|
安全 搜索推荐 Android开发
揭秘安卓与iOS系统的差异:技术深度对比
【10月更文挑战第27天】 本文深入探讨了安卓(Android)与iOS两大移动操作系统的技术特点和用户体验差异。通过对比两者的系统架构、应用生态、用户界面、安全性等方面,揭示了为何这两种系统能够在市场中各占一席之地,并为用户提供不同的选择。文章旨在为读者提供一个全面的视角,理解两种系统的优势与局限,从而更好地根据自己的需求做出选择。
47 2
|
20天前
|
安全 搜索推荐 Android开发
揭秘iOS与安卓系统的差异:一场技术与哲学的较量
在智能手机的世界里,iOS和Android无疑是两大巨头,它们不仅定义了操作系统的标准,也深刻影响了全球数亿用户的日常生活。本文旨在探讨这两个平台在设计理念、用户体验、生态系统及安全性等方面的本质区别,揭示它们背后的技术哲学和市场策略。通过对比分析,我们将发现,选择iOS或Android,不仅仅是选择一个操作系统,更是选择了一种生活方式和技术信仰。
|
25天前
|
安全 Android开发 iOS开发
iOS与安卓:技术生态的双雄争霸
在当今数字化时代,智能手机操作系统的竞争愈发激烈。iOS和安卓作为两大主流平台,各自拥有独特的技术优势和市场地位。本文将从技术架构、用户体验、安全性以及开发者支持四个方面,深入探讨iOS与安卓之间的差异,并分析它们如何塑造了今天的移动技术生态。无论是追求极致体验的苹果用户,还是享受开放自由的安卓粉丝,了解这两大系统的内在逻辑对于把握未来趋势至关重要。
|
26天前
|
安全 搜索推荐 Android开发
揭秘iOS与Android系统的差异:一场技术与哲学的较量
在当今数字化时代,智能手机操作系统的选择成为了用户个性化表达和技术偏好的重要标志。iOS和Android,作为市场上两大主流操作系统,它们之间的竞争不仅仅是技术的比拼,更是设计理念、用户体验和生态系统构建的全面较量。本文将深入探讨iOS与Android在系统架构、应用生态、用户界面及安全性等方面的本质区别,揭示这两种系统背后的哲学思想和市场策略,帮助读者更全面地理解两者的优劣,从而做出更适合自己的选择。
|
30天前
|
安全 Android开发 iOS开发
安卓vs iOS:探索两种操作系统的独特魅力与技术深度###
【10月更文挑战第16天】 本文旨在深入浅出地探讨安卓(Android)与iOS这两种主流移动操作系统的特色、优势及背后的技术理念。通过对比分析,揭示它们各自如何塑造了移动互联网的生态,并为用户提供丰富多彩的智能体验。无论您是科技爱好者还是普通用户,都能从这篇文章中感受到技术创新带来的无限可能。 ###
50 2
|
30天前
|
机器学习/深度学习 人工智能 Android开发
安卓与iOS:技术演进的双城记
【10月更文挑战第16天】 在移动操作系统的世界里,安卓和iOS无疑是两个最重要的玩家。它们各自代表了不同的技术理念和市场策略,塑造了全球数亿用户的移动体验。本文将深入探讨这两个平台的发展历程、技术特点以及它们如何影响了我们的数字生活,旨在为读者提供一个全面而深入的视角,理解这两个操作系统背后的哲学和未来趋势。
32 2
|
1月前
|
Java Android开发 Swift
掌握安卓与iOS应用开发:技术比较与选择指南
在移动应用开发领域,谷歌的安卓和苹果的iOS系统无疑是两大巨头。它们不仅塑造了智能手机市场,还影响了开发者的日常决策。本文深入探讨了安卓与iOS平台的技术差异、开发环境及工具、以及市场表现和用户基础。通过对比分析,旨在为开发者提供实用的指导,帮助他们根据项目需求、预算限制和性能要求,做出最合适的平台选择。无论是追求高度定制的用户体验,还是期望快速进入市场,本文都将为您的开发旅程提供有价值的见解。
下一篇
无影云桌面