我的应用程序使用android:protectionLevel =“signature”定义权限。如何防止其他应用程序定义相同的权限名称
<permission android:name="my.app.permission.EXAMPLE" android:protectionLevel="signature" />
我的意图是让应用程序模块只能通过我已签名的应用程序启动。这些应用程序模块在其活动中具有android:权限。 这工作正常。但是... 第三方应用程序可以使用相同的权限名称。如果我的应用程序第一次安装改变了保护级别设置为正常,像这样
<permission android:name="my.app.permission.EXAMPLE" android:protectionLevel="normal" />
,我就可以防止其他人的应用程序覆盖的权限。但是,如果有人卸载我的应用程序,然后安装他的应用程序,则重新定义权限。
是否有可能阻止其他应用程序中使用相同的权限名称,例如,给予许可,如应用程序包一个唯一的ID?
虽然清单是加密的,当它试图启动需要这个权限(将抛出一个异常具有所需的权限名)活动任何人都可以读取日志猫权限名称。
好问题,我的猜测是你没有办法限制其他应用程序这样做。 – FoamyGuy 2012-07-12 18:42:56
这是一个安全问题。我无法保证我签名的应用程序模块只会启动我已签名的核心应用程序,因为未签名的应用程序可以取代定义低级别保护的权限,然后使用我签名的模块。 – Dennix 2012-07-12 19:05:46
您可以通过使用不同的软件包名称,签名和protectionLevel = normal来创建应用的修改版本来设置测试。看看两个应用程序在同一台设备上会发生什么。我的猜测是,a)签名检查将首先启动,并确保流氓应用程序无法访问需要正确签名的应用程序。和b)具有不同保护级别的相同许可字符串可以共存于同一设备上。 – tiguchi 2012-07-12 19:08:00