Android定制权限重名引起的问题

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(分析非常全面的一篇文章)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值