Android允许开发者在manifest文件里声明和使用权限(permission)。声明的权限可以在不同的app里使用。如果不同的app声明了同名的权限,就可能会发生一些与预期不符的现象,并产生一些安全隐患。

在官方文档里,并没有找到Android如何裁定同名权限声明的资料。按照网上的一些说法以及实际发生的情况来看,第一个安装并声明权限的app,决定了这个权限的所有属性。后续安装app的权限声明将被忽略。

权限属性中比较重要的一个,保护级别(protectionLevel),决定了一个权限能否被使用。如果保护级别设为签名级别,那么只有第一个声明权限的应用可以使用这个权限,其他声明同名权限但签名不同的应用,会因为被第一个声明所覆盖,签名不符,而无法使用该权限。

更危险的是,如果一个关键app声明了签名权限,另外一个间谍软件声明了同名的正常权限,间谍软件先安装的话,会导致关键app的权限降级,间谍软件也就可以取得本该关键app才可取得的权限了。

Android 5.0对这种情况进行了一些修正。系统只允许签名相同的app,声明同名权限。后安装的,签名不同的app,会报INSTALL_FAILED_DUPLICATE_PERMISSION,应用无法安装。

参考资料:https://github.com/commonsguy/cwac-security/blob/master/PERMS.md(分析非常全面的一篇文章)

更多相关文章

  1. Android自定义权限permission
  2. Android 6.0动态权限,单个申请与多个同时申请
  3. Android中的Permission权限机制介绍
  4. Android声明式UI框架 Litho 初探——基础使用
  5. 【Android Studio快捷键】之导入相应包声明(import packages)
  6. Android各版本查询和开启悬浮窗权限
  7. Android 手机跳转到权限管理界面汇总

随机推荐

  1. android studio怎么更换默认主题?
  2. Android(安卓)studio如何修改项目名称
  3. Android开发 华为手机读取相册闪退问题
  4. android 简单实现电话的监听
  5. Android(安卓)触屏事件处理_手势识别 (补
  6. Android面试题整理(百度)
  7. Dagger2 基础入门与使用
  8. android greenDao SQLite数据库操作工具
  9. 输入法显示和隐藏
  10. android sdk manager 快速下载sdk