发明内容
本发明实施例提供一种应用程序的权限确定方法和装置,使的应用无法通过增加插件来增加应用的权限,降低了系统风险。
本发明实施例第一方面提供一种应用程序的权限确定方法,包括:
接收第一应用的安装请求,所述安装请求中携带第一应用申请的第一权限列表和所述第一应用请求的第一共享用户标识;
根据所述第一共享用户标识查找系统中已安装的使用所述第一共享用户标识的至少一个第二应用;
若所述第一应用为系统中已安装的所述第二应用的插件,则根据所述第一应用的申请的所述第一权限列表和所述第一共享用户标识对应的第二权限列表中的权限,确定所述第一应用的权限。
在第一方面的第一种可能的实施方式中,所述根据所述第一应用的申请的所述第一权限列表和所述第一共享用户标识对应的第二权限列表中的权限,确定所述第一应用的权限,具体包括:
将系统中所述第二权限列表中的所有权限确定为所述第一应用的权限;或者,
将所述第一权限列表中存在于所述第二权限列表中的权限确定为所述第一应用的权限;或者,
将所述第一权限列表中的所有权限确定为所述第一应用的权限。
结合第一方面的第一种可能的实施方式,在第一方面的第二种可能的实现方式中,根据所述第一应用的申请的所述第一权限列表和所述第一共享用户标识对应的第二权限列表中的权限,确定所述第一应用的权限,确定所述第一应用的权限之后,还包括:
将所述第一应用的信息添加至系统安装文件中,并将所述第一共享用户标识添加至所述第一应用的信息中。
结合第一方面,在第一方面的第三种可能的实施方式中,所述根据所述第一共享用户标识查找系统中已安装的使用所述第一共享用户标识的第二应用之后,还包括:
若所述第一应用不是所述第二应用的插件,或者所述第一应用的来源不是官方市场;
为所述第一应用分配第二共享用户标识,将所述第一应用的申请权限确定为所述第一应用的权限。
结合第一方面的第三种可能的实施方式,在第一方面的第四种可能的实施方式中,所述为所述第一应用分配所述第二共享用户标识,将所述第一应用的申请权限确定为所述第一应用的权限之后,还包括:
在系统安装文件中设置标签信息,标签信息用于指示所述第一应用不采用所述第一共享用户标识。
结合第一方面的第三、第四种可能的实施方式,在第一方面的第五种可能的实施方式中,所述为所述第一应用分配所述第二共享用户标识,将所述第一应用的申请权限确定为所述第一应用的权限之后,还包括:将所述第一应用的信息添加至系统安装文件中。
结合第一方面的第一、二、三、四和五种可能的实施方式中的任一实施方式,在第一方面的第六种可能的实施方式中,所述根据所述第一应用的申请的所述第一权限列表和所述第一共享用户标识对应的第二权限列表中的权限,确定所述第一应用的权限之前,还包括:
确定所述第一应用与所述第二应用的签名证书相同;
本发明实施例的第二个方面提供了一种应用程序的权限确定装置,包括:接收模块,用于接收第一应用的安装请求,所述安装请求中携带第一应用申请的第一权限列表和所述第一应用请求的第一共享用户标识;
查找模块,用于根据所述第一共享用户标识查找系统中已安装的使用所述第一共享用户标识的至少一个第二应用;
处理模块,用于若所述第一应用为系统中已安装的所述第二应用的插件,则根据所述第一应用的申请的所述第一权限列表和所述第一共享用户标识对应的第二权限列表中的权限,确定所述第一应用的权限。
在第二方面的第一种可能的实施方式中,所述处理模块具体用于:
将所述第二权限列表中的所有权限确定为所述第一应用的权限;或者,
将所述第一权限列表中存在于所述第二权限列表中的权限确定为所述第一应用的权限;或者,
将所述第一权限列表中的所有权限确定为所述第一应用的权限。
结合第二方面的第一种可能的实施方式,在第二方面的第二种可能的实现方式中,所述处理模块还用于:
将所述第一应用的信息添加至系统安装文件中,并将所述第一共享用户标识添加至所述第一应用的信息中。
结合第二方面,在第二方面的第三种可能的实施方式中,在判断所述第一应用是否为系统中已安装的所述第二应用的插件之后,所述处理模块还用于:
若所述第一应用不是所述第二应用的插件,或者所述第一应用的来源不是官方市场;
为所述第一应用分配第二共享用户标识,将所述第一应用的申请权限确定为所述第一应用的权限。
结合第二方面的第三种可能的实施方式,在第二方面的第四种可能的实施方式中,在所述为所述第一应用分配所述第二共享用户标识,将所述第一应用的申请权限确定为所述第一应用的权限之后,所述处理模块还用于:
在系统安装文件中设置标签信息,标签信息用于指示所述第一应用不采用所述第一共享用户标识。
结合第二方面的第三、第四种可能的实施方式,在第二方面的第五种可能的实施方式中,在所述为所述第一应用分配所述第二共享用户标识,将所述第一应用的申请权限确定为所述第一应用的权限之后,所述处理模块还用于:将所述第一应用的信息添加至系统安装文件中。
结合第二方面的第一、二、三、四和五种可能的实施方式中的任一实施方式,在第二方面的第六种可能的实施方式中,所述根据所述第一应用的申请的所述第一权限列表和所述第一共享用户标识对应的第二权限列表中的权限,确定所述第一应用的权限之前还用于:确定所述第一应用与所述第二应用的签名证书相同。
本发明实施例的第三个方面提供了一种应用程序的权限确定装置,包括:存储器和处理器,所述存储器与所述处理器通信,所述存储器中存储程序代码,且所述处理器用于调用所述存储器中存储的程序代码,执行第一方面的第一到五种可能的实施方式中的任一种所述的方法。
本发明实施例应用程序的权限确定方法和装置,对于已安装的应用的应用插件安装请求,根据该应用插件申请的权限和已安装的应用的共享用户标识对应的权限列表来确定该应用插件的权限。从而提高系统的安全性。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明应用程序的权限确定方法实施例一的流程图,如图1所示,本发明实施例提供的应用程序的权限确定方法,可以适用于各种用户设备,例如:手机,PC机,平板电脑(PAD)等。方法实施例的执行主体是上述终端设备中具有处理功能的模块或单元,例如:中央处理单元(CPU)等。本实施例的方法可以包括:
步骤101、接收第一应用的安装请求。
其中,第一应用的安装请求中携带第一应用申请的第一权限列表和第一共享用户标识;
步骤102、根据第一共享用户标识查找系统中已安装的使用第一共享用户标识的至少一个第二应用。
本发明实施例适用于各种操作系统,例如:微软操作系统,安卓(Android)操作系统等各种类型的操作系统。其中涉及的权限通常可以是指各种访问权限,例如:访问用户的通讯录,短信,照片等操作。如果两个或两个以上的应用使用同样的共享用户标识(sharedUserId),则这些应用所具有的权限也共享。
其中,第二应用是指系统中已安装的应用,上述第二应用在安装到系统之后,会下载第二应用的各种插件,并提示用户安装。系统提示的第一应用的安装请求中携带第一应用的申请权限。
由于某一应用与该应用的插件具有相同的共享标识(shareUerId),因此,可以根据第一应用的第一共享用户标识(shareUerId),查找出至少一个系统中已记录的使用第一共享用户标识的应用,也就是第二应用,第二应用可以是一个,也可以是多个应用。
具体的,对应系统中已安装的第二应用,可以通过查找packages.xml文件中与第一应用的共享标识相同的应用,即为第二应用。需要说明的是,第一应用的安装包.apk(android package)文件中可以包括应用的资源文件,数据,配置文件,执行文件,签名信息,签名时使用的证书的信息等内容。以下以安卓系统的.apk文件为例进行说明,.apk文件的具体如下:
S.Apk
--res(资源文件)
--META-INF(签名信息及签名时使用的证书文件目录)
----Manifest.xml(哈希表)
----CERT.SF(对Manifest中哈希值的哈希)
----CERT.RSA(签名后的哈希值以及签名时使用的证书的信息)
--lib(库文件目录)
--assets(经过编译的资源文件目录)
--classes.dex(应用的可执行文件)
--AndroidManifest.xml(应用的清单文件)
以上目录结构只是一个实例,具体实现时,某些apk可能不具有上述目录中的某个或某些文件或目录;
Android操作系统中,应用需要使用的权限要在应用安装包中的AndroidManifest.xml文件中声明,如下所示:
<uses-permission android:name=”SEND_SMS”/>
上面的声明表示应用申请使用发送短信的权限;
应用的sharedUserId也在上述文件中声明,如下所示:
<manifest xmlns:android=”http://schemas.android.com/apk/res/android”
Package=”com.test.activitynew”
android:versionCode=”2”
android:versionName=”2.0”
android:shareUserId=”com.test.activity”>
上面sharedUserId=“com.test.activity”就表示该应用的sharedUserId是com.test.activity。
其中,配置文件可以包括应用的名称,应用所需要申请的权限等,签名时使用的证书的信息包括证书的公钥,证书的索引,证书的所有者信息,以及证书的加密算法等。
可选的,安装过程中,系统还可以扫描解析应用的信息,判断第一应用是否来源于官方市场。
步骤103、若第一应用为系统中已安装的第二应用的插件,则根据第一应用的申请的第一权限列表和第一共享用户标识对应的第二权限列表中的权限,确定第一应用的权限。
作为一种可行的实施方式,可以将将第二权限列表中的所有权限确定为第一应用的权限。
作为另一种可行的实施方式,还可以将将第一权限列表中存在于第二权限列表中的权限确定为第一应用的权限。
作为再一种可行的实施方式,还可以在用户同意,或系统确认无风险的情况下,将第一权限列表中的所有权限确定为第一应用的权限。
本发明实施例应用程序的权限确定方法和装置,对于已安装的应用的应用插件安装请求,根据该应用插件申请的权限和已安装的应用的共享用户标识对应的权限列表来确定该应用插件的权限。从而提高系统的安全性。
下面采用具体的实施例,对图1所示方法实施例的技术方案进行详细说明。假设系统已安装了第二应用X,第二应用X的第一共享用户标识com.app.X对应的权限列表中包括权限a1、a2、a3、a4。第二应用X安装后在系统后台下载插件,即第一应用Y,第一应用Y申请的权限为a2、a3、a4、a5。可以判断Y是否来源于官方市场,若是,再可以进一步判断Y是否是X的插件,若是,则可以将系统中com.app.X对应的权限列表中的所有权限a1、a2、a3、a4确定为Y的权限;或者,还可以将第一应用的申请权限中存在于权限列表中的权限a2、a3、a4确定为Y的权限,又或者,可以在用户同意或系统确认无风险的情况下,将权限a2、a3、a4、a5确定为Y的权限。若判断Y不是来源于官方市场或者不是X的插件,则可以为Y重新分配一个第二共享用户标识,将只授予应用Y要求的权限a2、a3、a4、a5。
图2为本发明应用程序的权限确定方法实施例二的流程图,如图2所示,在图1所示实施例的基础上,本实施例提供了应用程序的权限确定方法以及插件安装的详细过程。本实施例的方法可以包括:
步骤201、安装第二应用。
在安卓(Android)平台上安装文件的后缀名一般为“.apk”(也有应用软件是rar或者zip格式的,需要解压之后再安装),安卓平台应用常用的安装方法一共有三种,具体地:1)、使用安卓(Android)系统的Market或者也叫电子市场中下载安装;2)、若用户的设备中已有“APK安装器”,可直接通过“APK安装器”选择相关应用安装包,进行安装。若用户的设备中无APK安装器,可选择下载软件安装器;3)、通过USB连接在电脑上安装应用。
首先,用户根据需求选择合适的安装方式在系统中安装第二应用。
步骤202、第二应用使用网络下载第一应用,并请求安装第一应用。
用户在应用运行第二应用时,第二应用在后台下载第一应用,并请求安装第一应用,第一应用的安装请求中携带第一应用的申请权限。
步骤203、根据第一应用的信息中的第一共享用户标识查找系统中的已经使用此第一共享用户标识的至少一个第二应用。
步骤204、判断第一应用的来源是否为官方市场。
其中判断第一应用是否为官方市场,通常有如下几种方式:1)、检查第一应用的关于(about),找到官方市场的网站,下载安装文件*.apk,通过搜索引擎,搜索到官方市场网站,进行对比;2)、通过应用助手获取到第一应用的软件名称,应用包名,软件版本,文件大小,软件权限等应用信息,确定是否来源于官方市场;3)、对比从官网上下载的应用*.apk和通过网络下载的第一应用的应用属性是否一致,从而确定第一应用是否来源于官方网站。(4)、将第一应用的签名信息及安装包中文件的哈希值传送到应用服务器(可以是GooglePlay,也可以是第三方服务器)进行签名和哈希值对比;
步骤205、判断第一应用是否为第二应用的插件。
判断第一应用是否为第二应用插件通常有以下几种判断方法:1)、检测配置文件中是否声明第一应用为插件;2)、检查第一应用是否会生成应用图标等。通过这样的方式可以判断第一应用是否为插件;3)检查第一应用配置文件中是否有声明了<categoryandroid:name="android.intent.category.LAUNCHER"/>的activity。
步骤206、确定第一应用的权限。
本实施例中有两种方式可通过系统确定授予第一应用权限,具体的步骤205还包括两个具体的步骤,如下:
步骤11、将系统中第一共享用户标识对应的权限列表中的所有权限确定为第一应用的权限;
步骤12、将第一应用的申请权限中存在于第一共享用户标识对应的权限列表中的权限确定为第一应用的权限。
步骤207、安装第一应用,将第一应用的信息添加至系统安装文件中,并将第一共享用户标识添加至第一应用的信息中。
系统安装文件为像packages.xml,package.list等安装信息记录文件。
步骤208、第一应用非官方市场和或非第二应用的插件时,确定权限。
在步骤203、204判断第一应用并非来源于官方市场,或者不是第二应用的插件,用户安装第一应用的处理办法,具体的,还包括如下步骤:
步骤20、系统为第一应用分配唯一的第二用户标识,将第一应用的申请权限确定为第一应用的权限;
步骤21、在系统安装文件中设置标签信息,标签信息用于指示第一应用不采用第一共享用户标识;
步骤22、将第一应用的信息添加至系统安装文件中。
根据图2中的步骤,假设某安卓(Android)系统中安装了第二应用A,第二应用A的第一用户共享标识com.app.A对应的权限为P1、P2,如下所示:
<packagename=”com.huawei.android.remotecontrol”
codePath=”/system/app/PhoneFinder.apk”
nativeLibraryPath=”/data/data/com.huawei.android.remotecontrol/lib”flags=”1”
ft=”137c481adb0”it=”137c481adb0”ut=”137c481adb0”version=”2206”
sharedUserId=”1001”>
安装第二应用A,第二应用A在系统后台下载第一应用B,应用B申请权限P2、P3、P4,并且请求安装第二应用B;
系统响应第二应用A安装第一应用B的请求,启动系统安装器安装第一应用B,首先检测第一应用B的来源是否为官方市场。具体的,将第一应用B的应用签名证书和包名等信息上传到官方市场进行检查对比,若检查通过,则是官方市场的应用,否则,不是;
若第一应用是来源于官方市场,可以进一步判断第一应用B是否为第二应用A的插件,具体的判断方法可以是:
安装时要求第一应用在配置文件中声明是否为插件,声明的格式可以为如下:
<app-plug android:name=”true”>
<parent-app android:name=”parent_app_name”/>
</app-plug>
当检测到有app-plug标签且标签属性值为true时,则可以判定该第一应用为一个插件;否则,不是插件。
另外,还可以通过检查第一应用B是否会生成对应的应用图标,即根据其是否可以独立运行来判断其是否为一个插件;检查第一应用B是否会生成应用图标的方法可以是,检查是否有activity设置了
<category android:name="android.intent.category.LAUNCHER"/>的属性。
若有activity设置了此属性,则说明会生成应用图标,否则,不会生成。如果第一应用B能够生成对应的应用图标,第一应用B不是第二应用A的插件,否则第一应用B为第二应用A的插件。
若第一应用B为第二应用A的插件,系统具体有三种确定第一应用B的权限的方式:1)、忽略第一应用B申请的新的权限,只授予第一应用B系统中记录的对应的sharedUserId的权限列表中的权限。即只授予第一应用B权限P1、P2。2)、根据第一应用B新申请的权限,授予第一应用B所申请的权限中sharedUserId的权限列表中已有的权限。即授予第一应用B权限P2。3)、在用户同意或系统确定无风险时,将第一应用B所申请的权限授予第一应用B,即授予权限P2、P3、P4。
可选的,在判断第一应用B是第二应用A的插件后,系统也可将上述两种处理方案显示给用户,由用户自己选择使用哪种处理方式,告知用户的方法可以为,弹出对话框,显示两种处理方式,提示用户选择。
确定权限后,安装第一应用B,记录第一应用B的相关信息,并将对应sharedUserId添加到应用B的记录中,如下:
<SharedUserId android:name=”com.app.A”/>
若判断第一应用B不是来源于官方市场,或者第一应用B不是第二应用A的一个插件,将对第一应用B做如下处理:1)、提取和处理应用安装包中的信息,忽略sharedUserId信息,为第一应用B分配一个唯一的UserId;2)、安装第一应用B,在系统安装完成并记录第一应用B信息时,在packages.xml文件中增加标签,标记第一应用B为被排除的sharedUserId应用,如下:
<disable-shareduid-app android:name=“app_B”/>
在系统启动时,当扫描到第一应用B的安装包中有sharedUserId信息时,一旦packages.xml文件中有此标签记录,就会忽略此sharedUserId信息,并且不会将第一应用B添加到sharedUserId为com.app.A的记录中,第一应用B不会获得com.app.A权限列表中的权限。
最后将第一应用B的信息记录到packages.xml文件中,完成应用安装。
本发明实施例应用程序的权限确定方法和装置,对于已安装的应用的应用插件安装请求,根据该应用插件申请的权限和已安装的应用的共享用户标识对应的权限列表来确定该应用插件的权限。让用户知晓新应用的安装风险,从而提高系统的安全性。
图3为本发明应用程序的权限确定方法实施例三的流程图。如图3所示,本实施例与图2所示实施例的区别在于本实施例中提醒用户,安装第一应用会增加风险,由用户选择是否安装第一应用。本实施例的方法可以包括:
步骤301、安装第二应用,记录第二应用的相关信息。
本实施例中假设第二应用为A,第一应用为B。相关信息具体包括但不限于:第二应用A的名称,第二应用A的sharedUserId,第二应用A的权限信息等;假定第二应用A的sharedUserId信息为
<sharedUerId android:name=”com.app.A”>
权限信息为:
<perm>
<item android:name=”android:permission.P1”/>
<item android:name=”android:permission.P2”/>
</perm>
若第二应用A包含sharedUserId信息,则将sharedUserId信息添加到系统记录文件packages.xml中,包括sharedUserId的权限列表信息。
步骤302、第二应用使用网络下载第一应用,并请求安装第一应用。
其中,第一应用B的信息包括但不限于:第一应用B的名称,第一应用B的sharedUserId信息,第一应用B的权限信息。信息记录形式参考步骤301中第二应用A的信息记录形式。
根据第一应用B的shareUerId信息以及系统记录的sharedUserId信息,判断第一应用B是否与系统其它应用共享相同的sharedUserId;
步骤303、提取sharedUserId权限列表中的所有权限。
提取新增权限的方法举例如下:
系统packages.xml中记录的sharedUserId权限列表为:
<perm>
<item android:name=”android:permission.P1”/>
<item android:name=”android:permission.P2”/>
</perm>
步骤304、对比第一应用申请的权限和权限列表中的权限,提取出新增的权限。
第一应用B记录的权限列表信息为:
<perm>
<item android:name=”android:permission.P1”/>
<item android:name=”android:permission.P3”/>
</perm>
则新增的权限为<item android:name=”android:permission.P3”/>
步骤305、提取所有共享此sharedUserId的应用信息,告知用户,这些应用都会增加上述新增的权限。
提取所有共享此sharedUserId的应用信息的具体的方法为:
根据packages.xml记录,查找sharedUserId记录为“com.app.A”的应用。
告知用户的方法可以为,弹出对话框,显示每一个上面查找到的应用或包名为com.app.A的应用的信息,信息可以是,应用的名称,应用已有的权限,应用的安装位置等信息的任一或其任意组合。并将权限P3的信息添加到提示信息中,显示给用户。
步骤306、用户知晓风险后选择是否安装
若用户选择安装则执行步骤307,若选择否,则执行步骤308。
步骤307、正常流程安装第一应用。
步骤308、放弃安装第一应用。
步骤309、结束。
本发明实施例应用程序的权限确定方法和装置,对于已安装的应用的应用插件安装请求,根据该应用插件申请的权限和已安装的应用的共享用户标识对应的权限列表,提醒用户安装风险,从而提高系统的安全性。
图4为本发明应用程序的权限确定装置实施例的结构示意图。如图4所示,本实施例的装置可以包括:
接收模块41,用于接收第一应用的安装请求,安装请求中携带第一应用申请的第一权限列表和第一应用请求的第一共享用户标识;
查找模块42,用于根据所述第一共享用户标识查找系统中已安装的使用所述第一共享用户标识的至少一个第二应用;;
处理模块43,用于若第一应用为系统中已安装的第二应用的插件,则根据第一应用的申请的第一权限列表和第一共享用户标识对应的第二权限列表中的权限,确定第一应用的权限。
可选的,处理模块43具体用于:
将系统中第二权限列表中的所有权限确定为第一应用的权限;或者,
将第一权限列表中存在于第二权限列表中的权限确定为第一应用的权限;或者,
将所述第一权限列表中的所有权限确定为所述第一应用的权限。
可选的,处理模块43还用于:
将第一应用的信息添加至系统安装文件中,并将第一共享用户标识添加至第一应用的信息中。
可选的,处理模块43还用于:
若第一应用不是第二应用的插件,或者第一应用的来源不是官方市场;
为第一应用分配第二共享用户标识,将第一应用的申请权限确定为第一应用的权限。
可选的,在为第一应用分配第二共享用户标识,将第一应用的申请权限确定为第一应用的权限之后,处理模块43还用于:
在系统安装文件中设置标签信息,标签信息用于指示第一应用不采用第一共享用户标识。
可选的,在为第一应用分配第二共享用户标识,将第一应用的申请权限确定为第一应用的权限之后,处理模块43还用于:
将第一应用的信息添加至系统安装文件中。
可选的,本发明提供的应用程序的权限确定装置,在接收第一应用的安装请求之后,还用于:
根据第一应用的签名证书和第二应用的签名证书是否一致,判断第一应用是否为第二应用的插件;若一致,则第一应用为第二应用的插件。
本实施例提供的应用程序的权限确定装置,与本发明图1、图2、图3所提供的方法实施例相对应,用于执行图1、图2、图3所示方法实施例的技术方案,该装置执行权限确定的方法、原理以及技术效果可参见方法实施例,此处不再赘述。
图5为本发明应用程序的权限确定装置又一实施例的结构示意图。如图5所示,包括:存储器和处理器,存储器与处理器通信,存储器中存储程序代码,且处理器用于调用存储器中存储的程序代码,用于执行图1、图2、图3所示方法实施例的技术方案,该装置执行权限确定的方法、原理以及技术效果可参见方法实施例,此处不再赘述。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。