掌桥专利:专业的专利平台
掌桥专利
首页

权限控制方法、装置、电子设备及计算机可读存储介质

文献发布时间:2024-04-18 20:01:30


权限控制方法、装置、电子设备及计算机可读存储介质

技术领域

本申请涉及信息安全技术领域,具体涉及一种权限控制方法、装置、电子设备及计算机可读存储介质。

背景技术

随着智能终端的发展,安装在终端设备上的应用程序(application,APP)越来越多样。终端设备通常会为安装的应用程序配置应用权限(Permission),应用权限可用于限制应用程序对用户个人数据的访问和/或对终端设备进行的操作,从而保护用户的隐私安全。目前,终端设备的权限控制灵活性差,存在信息安全隐患。

发明内容

本申请实施例公开了一种权限控制方法、装置、电子设备及计算机可读存储介质,可以提高权限控制的灵活性,并降低了信息泄露的风险,提高了信息安全性。

本申请实施例公开了一种权限控制方法,所述方法包括:

获取目标应用程序对应的权限声明信息,所述权限声明信息包括所述目标应用程序的一个或多个进程分别对应的进程信息及各个所述进程对应的第一声明权限;

根据所述权限声明信息,生成所述目标应用程序对应的权限状态表;所述权限状态表用于控制各个所述进程运行时的权限。

本申请实施例公开了一种权限控制装置,所述装置包括:

声明获取模块,用于获取目标应用程序对应的权限声明信息,所述权限声明信息包括所述目标应用程序的一个或多个进程分别对应的进程信息及各个所述进程对应的第一声明权限;

生成模块,用于根据所述权限声明信息,生成所述目标应用程序对应的权限状态表;所述权限状态表用于控制各个所述进程运行时的权限。

本申请实施例公开了一种电子设备,包括存储器及处理器,所述存储器中存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器实现如上所述的方法。

本申请实施例公开了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的方法。

本申请实施例公开的权限控制方法、装置、电子设备及计算机可读存储介质,获取目标应用程序对应的权限声明信息,该权限声明信息包括目标应用程序的一个或多个进程分别对应的进程信息及各个进程对应的第一声明权限,并根据该权限声明信息,生成目标应用程序对应的权限状态表;权限状态表用于控制各个进程运行时的权限。在本申请实施例中,通过声明进程级别的权限,实现进程级别的权限控制,可以提高权限控制的灵活性,并降低了信息泄露的风险,提高了信息安全性。

附图说明

为了更清楚地说明本申请实施例中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1A为一个实施例中权限控制方法的应用场景图;

图1B为一个实施例中电子设备中操作系统的系统架构图;

图1C为相关技术中权限模块控制权限的示意图;

图2为一个实施例中权限控制方法的流程图;

图3为另一个实施例中权限控制方法的流程图;

图4为一个实施例中权限模块控制进程权限的示意图;

图5为一个实施例中在目标应用程序中加载目标三方程序代码的流程图;

图6A为一个实施例中子进程与三方程序代码关系的示意图;

图6B为另一个实施例中子进程与三方程序代码关系的示意图;

图7为一个实施例中权限控制装置的框图;

图8为一个实施例中电子设备的结构框图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

需要说明的是,本申请实施例及附图中的术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。

可以理解,本申请所使用的术语“第一”、“第二”等可在本文中用于描述各种元件,但这些元件不受这些术语限制。这些术语仅用于将一个元件与另一个元件区分。举例来说,在不脱离本申请的范围的情况下,可以将第一声明权限称为第二声明权限,且类似地,可将第二声明权限称为第一声明权限。第一声明权限和第二声明权限两者都是声明权限,但其不是同一声明权限。本申请所使用的术语“多个”指的是两个及两个以上。

终端设备通常会为安装的应用程序配置应用权限(Permission),应用权限可用于限制应用程序对用户个人数据的访问和/或对终端设备进行的操作,从而保护用户的隐私安全。例如,终端设备的定位信息,可使用定位权限进行控制,应用程序如果需要获取终端设备的实时定位信息,则必须获得用户确认定位权限的授权,才能够获取终端设备的实时定位信息。

在相关技术中,在终端设备中会为每个安装的应用程序分配对应的UID(User ID,用户标识),从而实现应用程序隔离的沙箱机制。终端设备的操作系统中会建立{UID,权限名,授权状态}的权限授权表,该权限授权表可用于确定各个应用程序是否拥有某种权限,以在应用程序运行时,对应用程序的权限进行控制。在应用程序运行时,应用程序对应的父进程和子进程会配置相同的UID,因此,会直接赋予父进程和子进程相同的权限,仅能从应用级别进行权限控制,灵活性差。

对于框架型应用程序(例如浏览器、导航应用、社交应用等),由于框架型应用程序承载的业务较多,往往会申请非常多的权限,同一应用程序下的进程赋予相同的权限,会导致框架型应用程序中运行的三方程序代码被授予过多的权限(三方程序代码的权限与框架型应用程序的权限相同)。由于三方程序代码的上线时间短,且编程方式有限,安全攻击通常会藏匿于业务行为中难以发现,容易出现安全漏洞,利用非必要的权限恶意获取用户的隐私信息,存在信息安全隐患。

本申请实施例提供了一种权限控制方法、装置、电子设备及计算机可读存储介质,可以提高权限控制的灵活性,并降低了信息泄露的风险,提高了信息安全性。

图1A为一个实施例中权限控制方法的应用场景图。如图1A所示,本申请实施例中提供的权限控制方法可应用于电子设备100,该电子设备100可包括但不限于手机、可穿戴设备(智能眼镜、智能手表等)、平板电脑、车载终端、笔记本电脑、PC(Personal Computer,个人计算机)等。

电子设备100可获取目标应用程序对应的权限声明信息,该权限声明信息包括目标应用程序的一个或多个进程分别对应的进程信息及各个进程对应的第一声明权限。电子设备100可根据权限声明信息,生成目标应用程序对应的权限状态表;该权限状态表可用于控制各个进程运行时的权限。

示例性地,图1B为一个实施例中电子设备中操作系统的系统架构图。如图1B所示,以电子设备的操作系统为Android系统为例,该操作系统可包括应用程序层、应用程序框架层、系统库及内核层。

应用程序层可以包括一系列应用程序包,如相机、日历、地图、音乐等应用程序。

应用程序框架层为应用程序层的应用程序提供应用编程接口(applicationprogramming interface,API)和编程框架;应用程序框架层可以包括窗口管理器,内容提供器,视图系统,电话管理器,资源管理器,通知管理器等。其中,窗口管理器用于管理窗口程序,如窗口管理器可以获取显示屏大小,判断是否有状态栏,锁定屏幕,截取屏幕等;内容提供器用来存放和获取数据,并使这些数据可以被应用程序访问;视图系统包括可视控件,例如显示文字的控件,显示图片的控件等;电话管理器用于提供电子设备的通信功能。例如通话状态的管理(包括接通,挂断等);资源管理器为应用程序提供各种资源,比如本地化字符串、图标、图片、视频文件等;通知管理器使应用程序可以在状态栏中显示通知信息,可以用于传达告知类型的消息。

Android Runtime包括核心库和虚拟机。Android runtime负责安卓系统的调度和管理,核心库用于提供java语言需要调用的功能函数以及安卓的核心库等,应用程序层和应用程序框架层则运行在虚拟机中。

系统库可以包括多个功能模块。例如:表面管理器(surface manager),媒体库(Media Libraries),三维图形处理库(例如:OpenGL ES),2D图形引擎(例如:SGL)等。

内核层是硬件和软件之间的层。内核层至少包含显示驱动,摄像头驱动,音频驱动,传感器驱动。

现结合图1B所示的系统架构图,对本申请实施例进行说明。在一些实施例中,应用程序框架层可包括权限模块(Permission模块),权限模块用于对电子设备中的各应用程序进行权限管理。该权限模块可依赖于应用程序框架层的包管理器。图1C为相关技术中权限模块控制权限的示意图。在相关技术中,如图1C所示,应用程序框架层的权限模块可包括权限授权表(如图1C中的Package.xml文件,Package.xml也可理解为数据库),该权限授权表可记录各个应用程序对应的权限授予状态,该权限授权表的格式为{UID,权限名,授权状态},不同应用程序对应的UID不同。在应用程序运行时,创建该运行的应用程序对应的主进程和子进程,会赋予相同的UID,权限模块通过创建的进程对应的UID查找权限授权表,授予相同的权限。例如,某个应用程序的主进程被授予的权限包括相机访问权限、定位权限、网络访问权限等,则该应用程序的子进程被授予的权限与主进程相同,也包括相机访问权限、定位权限、网络访问权限等。

在本申请实施例中,各应用程序的开发者可在应用程序的声明文件中对应用程序的一个或多个进程所需求的权限进行声明。应用程序框架层的包管理器可获取目标应用程序对应的权限声明信息,该权限声明信息包括目标应用程序的一个或多个进程分别对应的进程信息及各个进程对应的第一声明权限。应用程序框架层的包管理器可根据权限声明信息,生成目标应用程序对应的权限状态表,并将该权限状态表加入到权限模块中。在应用程序运行时,权限模块可根据权限状态表确定该应用程序下运行的进程对应的权限状态信息,从而确定各运行的进程所授予的权限。

需要说明的是,图1B中所示的系统架构图仅用于说明本申请实施例,电子设备的操作系统也可以是其它的操作系统,或者是其它的系统架构,并不仅限于图1B所示的系统架构。

如图2所示,提供一种权限控制方法,可应用于上述的电子设备,该方法可包括以下步骤:

步骤210,获取目标应用程序对应的权限声明信息;权限声明信息包括目标应用程序的一个或多个进程分别对应的进程信息及各个进程对应的第一声明权限。

目标应用程序可以是能够在电子设备上运行的任一应用程序,在一些实施例中,每个应用程序在电子设备中成功安装后,电子设备可为安装的应用程序分配相应的UID,不同应用程序可对应不同的UID,UID可用于标识应用程序,以实现不同应用程序之间隔离的沙箱机制。

目标应用程序对应的权限声明信息可用于表征目标应用程序所声明的权限,目标应用程序所声明的权限可指的是目标应用程序需要请求的权限,一个权限可以表征执行特定操作的能力,例如,相机访问权限表征访问电子设备上的相机的能力,定位权限表征获取电子设备的实时位置信息的能力等。

在本申请实施例中,目标应用程序对应的权限声明信息,可包括目标应用程序的一个或多个进程分别对应的进程信息及各个进程对应的第一声明权限,该进程信息可包括进程名称、进程类型等,进程类型可包括前台进程、后台进程等类型,但不限于此。

各个进程对应的第一声明权限指的是各个进程所声明的权限,各个进程所声明的权限可包括一个或多个权限,该一个或多个权限可以是确定授予的权限,也可以是待用户授予的权限。进一步地,确定授予的权限可指的是由电子设备的操作系统直接授予的权限,也即,只要声明了权限,系统默认授予该权限;待用户授予的权限可指的是需要用户确认是否授予的权限,可以在进程运行时通过弹窗等方式提示用户确认是否授予的权限,如果电子设备检测到用户确认授予的操作,则权限为授予状态,如果电子设备检测到用户确认不授予的操作,则权限为拒绝状态,进程无法执行该权限对应的操作。

可选地,电子设备可在目标应用程序安装成功后或者在目标应用程序首次启动时,获取目标应用程序对应的权限声明信息。由于目标应用程序对应的权限声明信息通常在目标应用程序开发过程中就已经确定,在目标应用程序的运行过程中通常不会发生变化,因此,可在目标应用程序安装成功后或者在目标应用程序首次启动时,获取目标应用程序对应的权限声明信息,并根据权限声明信息,生成目标应用程序对应的权限状态表,可以减少占用的资源。

可选地,由于目标应用程序对应的权限声明信息也可能会发生变更,例如目标应用程序进行版本更新等,或者目标应用程序对应的权限状态表不是一直保存在电子设备中(如发生权限状态表丢失或删除等)等情况,则电子设备也可在目标应用程序每次启动时,获取目标应用程序对应的权限声明信息,以保证生成的权限状态表的准确性,提高权限控制的准确性。

步骤220,根据权限声明信息,生成目标应用程序对应的权限状态表;权限状态表用于控制各个进程运行时的权限。

电子设备可根据目标应用程序的一个或多个进程分别对应的进程信息及各个进程对应的第一声明权限,生成目标应用程序的各个进程对应的权限状态信息,并根据目标应用程序的各个进程对应的权限状态信息构建目标应用程序对应的权限状态表。该权限状态表可包括目标应用程序的各个进程对应的权限状态信息,在一些实施例中,权限状态信息可包括目标应用程序的应用标识、对应进程的进程信息、权限名称及权限授权状态。

可选地,目标应用程序的应用标识可包括目标应用程序的UID、目标应用程序的包名、目标应用程序的应用名称等中的任一种,进程的进程信息可包括进程名称、进程标识等中的任一种,进程标识可包括进程的PID(Process ID,进程标识)。例如,权限状态信息可为{UID,PID,权限名称,权限授权状态},如{UID,PID1,相机访问权限,授权状态}、{UID,PID2,定位权限,拒绝状态}等;或者,权限状态信息可为{UID,进程名称,权限名称,权限授权状态},如{UID,进程1,相机访问权限,授权状态}、{UID,进程2,定位权限,拒绝状态}等,但不限于此。

权限授权状态可用于表征权限是否被授予,在一些实施例中,权限授权状态可包括授予状态及拒绝状态,授予状态表示权限已被授予,即已授权,对应的进程能够执行权限对应的操作,拒绝状态表示权限被拒绝授予,即未授权,对应的进程不能够执行权限对应的操作。可选地,对于待用户授予的权限,在用户未指示是否授予权限的情况下,可配置对应的权限授权状态为拒绝状态,当检测到用户确认授予的操作时,再将对应的权限授权状态更改为授予状态,可以避免进程在用户未授权的情况下执行相应的操作,造成信息泄露的风险。可选地,权限授权状态也可包括授予状态、拒绝状态及待确认状态,对于待用户授予的权限,在用户未指示是否授予权限的情况下,可配置对应的权限授权状态为待确认状态,当检测到用户确认授予的操作时,再将对应的权限授权状态更改为授予状态,或者,当检测到用户确认不授予的操作时,再将对应的权限授权状态更改为拒绝状态。可以更加细化地对进程的各个权限的权限授权状态进行划分,提高了权限管理效率。

在一些实施例中,目标应用程序对应的权限状态表中,可仅包括目标应用程序的各个进程的第一声明权限对应的权限状态信息,例如,进程A的第一声明权限包括相机访问权限及定位权限,则权限状态表可包括进程A的两个权限状态信息:{UID,进程A的进程名称,相机访问权限,权限授权状态}、{UID,进程A的进程名称,定位权限,权限授权状态};进程B的第一声明权限包括定位权限及后台运行权限,则权限状态表可包括进程B的两个权限状态信息:{UID,进程B的进程名称,定位权限,权限授权状态}、{UID,进程B的进程名称,后台运行权限,权限授权状态}。权限状态表采用类似于权限白名单的方式,维护各进程声明的权限的权限状态信息,可以减少权限状态表的数据量,减少所占用的空间。

在另一些实施例中,目标应用程序对应的权限状态表中,可包括目标应用程序的各个进程与所有权限分别对应的权限状态信息,该所有权限可包括进程的第一声明权限以及进程未声明的权限,该所有权限可以是操作系统所提供的所有权限,也可以是目标应用程序声明的所有权限。对于进程未声明的权限,可配置对应的权限授权状态为拒绝状态,对于进程声明的权限(即进程的第一声明权限),可根据权限的实际授予情况配置相应的权限授权状态。

在另一些实施例中,目标应用程序对应的权限状态表中,也可仅包括目标应用程序的各个进程未声明的权限对应的权限状态信息,权限状态表维护各个进程禁止授权的权限的权限状态信息,采用类似于权限黑白名单的方式,能够有效控制各个进程的权限,提高安全性。

需要说明的是,权限状态表的具体格式内容并不仅限于上述的几种方式,本申请实施例对此不作限定,可根据实际情况进行设置,权限状态表中的权限状态信息可以列表的方式进行存储。针对每个应用程序,可分别生成对应的权限状态表,也可以多个应用程序共用一张权限状态表,即一张权限状态表中可包括多个应用程序的各个进程的权限状态信息。

在电子设备生成目标应用程序对应的权限状态表后,可将权限状态表放入到应用程序框架层的权限模块中。在目标应用程序运行的过程中,权限模块可根据目标应用程序对应的权限状态表对目标应用程序运行的各个进程的权限进行控制。可选地,在运行的目标进程执行特定操作(如访问个人数据、调用系统中的接口等)时,可获取该目标进程的进程信息(如进程标识或进程名称等)及该特定操作对应的权限名称,权限模块可根据目标进程的进程信息及该特定操作对应的权限名称,在权限状态表中查找并确定目标进程是否被授予该特定操作对应的权限。若目标进程未被授予该特定操作对应的权限,则可对该特定操作进行拦截,阻止目标进程执行该特定操作;若目标进程被授予该特定操作对应的权限,则可允许目标进程执行该特定操作。其中,目标进程可以是目标应用程序的任一进程。

在本申请实施例中,获取目标应用程序对应的权限声明信息,该权限声明信息包括目标应用程序的一个或多个进程分别对应的进程信息及各个进程对应的第一声明权限,并根据该权限声明信息,生成目标应用程序对应的权限状态表;权限状态表用于控制各个进程运行时的权限。通过声明进程级别的权限,实现进程级别的权限控制,可以提高权限控制的灵活性,并降低了信息泄露的风险,提高了信息安全性。

如图3所示,在另一个实施例中,提供一种权限控制方法,可应用于上述的电子设备,该方法包括以下步骤:

步骤302,对目标应用程序对应的声明文件中的目标字段进行解析,得到权限声明信息;权限声明信息包括目标应用程序的一个或多个进程分别对应的进程信息及各个进程对应的第一声明权限。

各个应用程序可具有对应的声明文件,该声明文件可用于描述应用程序、声明应用程序的权限、声明应用程序的组件以及描述应用程序的属性等。在一些实施例中,目标应用程序的开发者可预先在目标应用程序对应的声明文件中,添加目标应用程序的一个或多个进程分别对应的进程信息及各个进程对应的第一声明权限,不同进程对应的第一声明权限可以不同,也可以相同,开发者可根据实际的需求对各个进程所需的权限进行声明,从而可以提高权限控制的灵活性。

可选地,电子设备可在安装目标应用程序后,或者目标应用程序首次启动时,对目标应用程序对应的声明文件中的目标字段进行解析,得到权限声明信息。其中,目标字段可指的是用于描述目标应用程序的各个进程的字段。目标字段中可包括用于声明进程的权限的进程权限声明字段,可解析目标字段中各个进程对应的进程权限声明字段,得到各个进程对应的第一声明权限。

示例性地,以声明文件为Manifest文件为例,Manifest文件中可对应用程序所需的权限进行声明,以及可对应用程序中的各个进程所需的权限进行声明。Manifest文件的文件内容可如下所示:

其中,Manifest文件中的users-permission android:name字段可用于指示应用程序声明的权限;目标字段可为Manifest文件中的application字段,进程对应的进程权限声明字段可为application字段中的android:process-uses-permissi on字段;serviceandroid:name字段可用于指示进程名称,android:process可用于指示进程类型。当应用程序有多个进程时,可在应用程序对应的Manifest文件的application字段中,描述每个进程的进程信息并声明每个进程所需的权限。应用程序的开发者可根据实际需求对应用程序的各个进程所需的权限进行声明,提高了权限控制的灵活性,且可以避免出现进程过渡授权的情况,提高了信息安全性。

在目标应用程序对应的声明文件中声明权限的一个或多个进程,可包括但不限于目标应用程序的主进程和/或子进程。主进程可用于管理整个目标应用程序的生命周期,主进程可用于运行目标应用程序的主程序(如“main”脚本等)。子进程可为主进程创建的进程,不同子进程可执行不同的任务。在一些实施例中,目标应用程序可以是框架型应用程序,框架型应用程序可指的是能够运行三方程序代码的应用程序,框架型应用程序可以作为三方程序代码的运行容器,例如,框架型应用程序可包括但不限于浏览器、社交应用、导航应用等。三方程序代码可指的是与框架型应用程序的原生代码不同的第三方程序代码,三方程序代码可包括但不限于浏览页面代码、小程序代码、三方SDK(SoftwareDevelopment Kit,软件开发工具包)等。目标应用程序的主进程可用于运行目标应用程序的框架程序(即原生代码),子进程则可用于运行三方程序代码。通过在目标应用程序对应的声明文件中声明子进程的权限,可以进一步约束目标应用程序中运行的三方程序代码的权限,从而提高信息安全性。

在一些实施例中,目标应用程序对应的权限声明信息还可包括目标应用程序声明的权限集合,该权限集合中包含的权限为整个目标应用程序所需的权限,目标应用程序的各个进程对应的第一声明权限可属于该权限集合。可通过解析目标应用程序对应的声明文件中的应用权限声明字段,得到目标应用程序声明的权限集合,例如,可通过解析目标应用程序的Manifest文件中的users-permission android:name字段,得到目标应用程序声明的权限集合。目标应用程序的开发者针对各进程所声明的权限,需要属于该权限集合。

可选地,电子设备获取各个进程对应的第一声明权限后,可判断各个进程对应的第一声明权限是否属于目标应用程序声明的权限集合,若存在任一进程声明的任一权限不属于该权限集合,则可将该不属于权限集合的权限的权限授权状态配置为拒绝状态,并禁止对进程授予该权限。通过约束各个进程能够获取的权限上限,可以进一步约束进程的权限,提高权限控制效果,减少权限过度授予的情况,特别是减少了目标应用程序中运行的三方程序代码权限过度授予的情况,提高了安全性。

在一些实施例中,由于主进程用于运行目标应用程序的主程序,一般较少存在权限过度授予的情况,因此,目标应用程序对应的声明文件中声明权限的进程可仅包括目标应用程序的子进程,授予目标应用程序的主进程的权限,可与授予目标应用程序的权限相同,也即主进程的第一声明权限可等于目标应用程序声明的权限集合。目标应用程序对应的权限状态表中可以不维护主进程对应的权限状态信息,权限模块可直接根据权限授权表(用于记录各个应用程序对应的权限授予状态)控制主进程的权限。

示例性地,图4为一个实施例中权限模块控制进程权限的示意图。应用程序框架层的权限模块可包括权限授权表(如图4中的Package.xml文件)及权限状态表(如图4中的Package-Process.xml文件),权限授权表可记录各个应用程序对应的权限授予状态,权限状态表则可用于记录应用程序的各个子进程对应的权限状态信息。在应用程序运行时,创建该运行的应用程序对应的主进程和子进程,会赋予相同的UID,若创建主进程,权限模块通过创建的主进程对应的UID查找权限授权表,授予和该主进程所运行的应用程序相同的权限;若创建子进程,权限模块通过创建的子进程对应的UID和PID查找权限状态表,确定该创建的子进程对应的权限状态信息,对该创建的子进程进行权限控制。

需要说明的是,目标应用程序的进程对应的第一声明权限,也可以不属于目标应用程序声明的权限集合,即授予进程的权限不一定小于或等于授予目标应用程序的权限,目标应用程序的开发者可根据实际需求对目标应用程序及各进程所需的权限进行声明,提高权限控制的灵活性。

步骤304,根据权限声明信息,生成目标应用程序对应的权限状态表;权限状态表用于控制各个进程运行时的权限。

在一些实施例中,权限状态表中的权限状态信息可包括目标应用程序的应用标识、对应进程的进程名称、权限名称及权限授权状态,例如,权限状态信息可为{UID,进程名称,权限名称,权限授权状态}。由于进程的进程名称通常不会发生变化,因此,在目标应用程序安装成功后或者在目标应用程序首次启动时,生成目标应用程序对应的权限状态表,权限状态表中包含的权限状态信息可以是固定的,当进程对应的第一声明权限发生变化(如目标应程序的版本更新),或者当进程声明的某个权限对应的权限授权状态发生变化(如用户确认进行授权,或者用户确认不授权等)时,才会对权限状态表进行更新。

在另一些实施例中,权限状态表中的权限状态信息可包括目标应用程序的应用标识、对应进程的进程标识、权限名称及权限授予状态,例如,权限状态信息可为{UID,PID,权限名称,权限授权状态}。由于在每次创建进程时,操作系统为进程分配的进程标识可能会发生变化,因此,可在每次创建进程时对权限状态表进行更新。

步骤306,当创建第一进程时,根据第一进程的进程名称确定第一进程对应的第一声明权限。

第一进程可以是目标应用程序的任一进程。当在目标应用程序运行的过程中,创建第一进程,则可根据第一进程的进程名称确定第一进程对应的第一声明权限。作为一种实施方式,可根据目标应用程序对应的声明文件,从声明文件中的目标字段解析得到第一进程对应的第一声明权限。例如,当前创建的进程的进程名称为SubProcess1,则可在Manifest文件的application字段中,找到SubProcess1对应的android:process-uses-permission字段,并解析得到SubProcess1对应的第一声明权限。

步骤308,获取分配的第一进程对应的进程标识。

在创建第一进程时,电子设备的操作系统可为创建的第一进程分配相应的进程标识,则可获取该分配的进程标识。

步骤310,根据第一进程对应的进程标识及对应的第一声明权限,生成第一进程对应的权限状态信息,并将第一进程对应的权限状态信息添加到权限状态表中。

可根据第一进程对应的进程标识及对应的第一声明权限,生成第一进程对应的权限状态信息,该权限状态信息包括目标应用程序的应用标识、第一进程的进程标识、权限名称及权限授予状态,再将权限状态信息添加到权限状态表中,以对权限状态表进行更新,使得权限模块可在第一进程运行的过程中,对第一进程的权限进行控制。

在一些实施例中,当终止第一进程时,可删除权限状态表中第一进程对应的权限状态信息。通过动态更新目标应用程序对应的权限状态表,可以及时维护权限状态表中各个进程对应的权限状态信息,提高对进程进行权限控制的准确性及控制效果。

在本申请实施例中,可根据实际的需求在目标应用程序对应的声明文件中,对目标应用程序的各个进程的权限进行声明,实现了进程级别的权限声明,可以提高权限控制的灵活性,可以减少权限过度授予的情况,特别是减少了目标应用程序中运行的三方程序代码权限过度授予的情况,提高了安全性。

在一些实施例中,目标应用程序可以是框架型应用程序,目标应用程序可以作为三方程序代码的运行容器,可以在目标应用程序的子进程中运行三方程序代码。为了进一步降低三方程序代码的权限范围,提高对三方程序代码的权限控制效果,如图5所示,上述的权限控制方法还可包括以下步骤:

步骤502,当在目标应用程序中加载目标三方程序代码时,获取目标三方程序代码对应的第二声明权限。

目标三方程序代码可以是浏览页面代码、小程序代码、三方SDK等中的任一种,但不限于此,当在目标应用程序中加载目标三方程序代码时,需要在目标应用程序的子进程中运行目标三方程序代码,可获取目标三方程序代码对应的第二声明权限,并根据目标三方程序代码对应的第二声明权限选择权限匹配的第二进程运行目标三方程序代码。

可选地,可在加载目标三方程序代码时,可对目标三方程序代码的权限声明字段进行解析,得到目标三方程序代码对应的第二声明权限,第二声明权限为目标三方程序代码所声明的权限,即目标三方程序代码运行过程中需要申请的权限。

步骤504,根据各个进程对应的第一声明权限及第二声明权限,确定第二进程,第二进程对应的第一声明权限包含第二声明权限。

步骤506,在第二进程中运行目标三方程序代码。

电子设备可将目标应用程序的各个进程对应的第一声明权限与目标三方程序代码对应的第二声明权限进行比对,以确定对应的第一声明权限大于或等于该第二声明权限的进程,作为第二进程,第二进程对应的第一声明权限包含第二声明权限。第二进程可为目标应用程序的子进程,可用于运行三方程序代码。

在一些实施例中,若存在多个子进程的第一声明权限大于或等于目标三方程序代码对应的第二声明权限,则可从多个子进程中确定第一声明权限最少的进程,作为第二进程;或者,可以从多个子进程中确定处于空闲的进程,作为第二进程。

示例性地,图6A为一个实施例中子进程与三方程序代码关系的示意图。如图6A所示,目标应用程序包括主进程及子进程1、子进程2,其中,可赋予主进程和目标应用程序相同的权限,目标应用程序声明的权限包括权限A、权限B、权限C及权限D,则主进程所需的权限包括权限A、权限B、权限C及权限D;目标应用程序对应的声明文件中,子进程1声明的权限包括权限A及权限D,子进程2声明的权限包括权限B及权限C。当目标应用程序加载三方程序代码A时,获取三方程序代码A声明的权限为权限A,由于子进程1声明的权限包含三方程序代码A声明的权限,则可将三方程序代码A放到子进程1中运行。当目标应用程序加载三方程序代码B时,获取三方程序代码B声明的权限为权限B和权限C,由于子进程2声明的权限包含三方程序代码B声明的权限,则可将三方程序代码B放到子进程2中运行。

作为一种具体实施方式,第二进程可以是对应的第一声明权限与目标三方程序代码对应的第二声明权限相同的子进程。为了保证一定可以找到对应的第一声明权限与目标三方程序代码对应的第二声明权限相同的子进程,目标应用程序的权限声明信息可包括N个子进程分别对应的进程信息及分别对应的第一声明权限,该N可为对M个权限进行排列组合得到的权限组合的总数量,N个子进程分别对应的第一声明权限为不同的权限组合。其中,M可为正整数。第二进程为N个子进程中对应的第一声明权限与第二声明权限一致的子进程。

可选地,M可为目标应用程序声明的权限集合中包含的权限数量,例如,目标应用程序声明的权限集合中包含3个权限:权限A、权限B及权限C,则M可为3,对3个权限进行排列组合可得到的权限组合有:权限A、权限B、权限C、权限A-权限B、权限A-权限C、权限B-权限C、权限A-权限B-权限C,N可以是3个权限排列组合得到的所有权限组合的总数量7。可以在目标应用程序对应的声明文件中,预先声明权限集合的所有可能的权限组合分别对应的子进程,例如,共有7种权限组合的情况,则可以在声明文件中预先声明7个子进程,每个子进程对应的第一声明权限分别为其中一种权限组合,且不同子进程对应不同的权限组合。

当在目标应用程序中加载目标三方程序代码时,可从N个子进程中找到对应的第一声明权限与目标三方程序代码对应的第二声明权限相同的子进程,作为第二进程,并在第二进程中运行目标三方程序代码。

示例性地,图6B为另一个实施例中子进程与三方程序代码关系的示意图。如图6B所示,目标应用程序声明的权限包括权限A、权限B,则共有3种权限组合:权限A、权限B、权限A-权限B,则目标应用程序可包括3个子进程1、子进程2、子进程3,目标应用程序对应的声明文件中,子进程1声明的权限包括权限A,子进程2声明的权限包括权限B,子进程3声明的权限包括权限A及权限B。当目标应用程序加载三方程序代码A时,获取三方程序代码A声明的权限为权限A,则可将三方程序代码A放到子进程1中运行。当目标应用程序加载三方程序代码B时,获取三方程序代码B声明的权限为权限B,则可将三方程序代码B放到子进程2中运行。当目标应用程序加载三方程序代码C时,获取三方程序代码C声明的权限为权限A和权限B,则可将三方程序代码C放到子进程3中运行。采用该方式,可以保证子进程声明的权限与运行的三方程序代码声明的权限一致,进一步限缩了三方程序代码的权限范围,减少三方程序代码过度授权的情况。

在一些实施例中,一个子进程中可能运行多个不同的三方程序代码,不同三方程序代码对于相同的权限可能有不同的权限授权状态。为了更好地对三方程序代码的权限进行控制,目标应用程序对应的权限状态表中可进一步维护三方程序代码的相关信息。权限状态表可包括目标应用程序中的一个或多个三方程序代码分别对应的权限状态信息,权限状态信息包括目标应用程序的应用标识、对应进程的进程信息、对应三方程序代码的程序标识、权限名称及权限授权状态。其中,程序标识可包括但不限于程序名称、运行三方程序代码的线程标识、程序地址(如浏览页面的URL(Uniform Resource Locator,资源定位符)地址等)。例如,权限状态信息可为{UID,PID,程序名称,权限名称,权限授权状态},或者权限状态信息可为{UID,进程名称,程序名称,权限名称,权限授权状态}等,但不限于此。

例如,子进程1声明的权限为权限A,在子进程中运行的三方程序代码A及三方程序代码B声明的权限也都为权限A,但是三方程序代码A对于权限A的权限授权状态为授权状态,而三方程序代码B对于权限A的权限授权状态为拒绝状态,则可在权限状态表中维护权限状态信息:{UID,子进程1,代码A,权限A,授权状态}和{UID,子进程1,代码B,权限A,拒绝状态}。

可选地,可在目标应用程序中加载目标三方程序代码时,当确定目标三方程序代码对应的第二进程后,可根据第二进程的进程信息、目标三方程序代码对应的程序标识及第二声明权限生成目标三方程序代码对应的权限状态信息,并将该权限状态信息添加到权限状态表中。

在一些实施例中,权限授权状态除了包括授权状态及拒绝状态,还可包括卸载状态,卸载状态可用于指示三方程序代码未安装或者被卸载或者被清除等。当在目标应程序中卸载三方程序代码(或者清除三方程序代码时),可将该三方程序代码对应的权限状态信息中的权限授权状态更新为卸载状态,可以更加准确地表征三方程序代码对应的权限授权状态。

若是权限状态表中维护的权限状态信息不会经常发生变更,比如目标三方程序代码对应的第二进程是固定的,第二进程是对应的第一声明权限与第二声明权限一致的子进程,且权限状态信息包含的是进程名称、程序名称等不容易发生变更的信息,则可在目标应用程序中首次加载目标三方程序代码时,生成目标三方程序代码对应的权限状态信息,并将该权限状态信息添加到权限状态表中。若是权限状态表中维护的权限状态信息容易发生变更,比如目标三方程序代码对应的第二进程不固定,或者权限状态信息包含的是进程标识、运行三方程序代码的线程标识等可能发生变化的信息,则可在目标应用程序中每次加载目标三方程序代码时,生成目标三方程序代码对应的权限状态信息,并将该权限状态信息添加到权限状态表中,当退出运行目标三方程序代码时,删除权限状态表中目标三方程序代码对应的权限状态信息,以实时对权限状态表进行更新,保证权限状态表的准确性。可以在进程权限控制的基础上,进一步控制各进程中运行的三方程序代码的权限,提高了权限控制的细粒度,提高了权限控制的灵活性,并进一步降低了对三方程序代码过度授权的风险,提高了权限控制效果。

在本申请实施例中,当在目标应用程序中加载目标三方程序代码时,可确定对应的第一声明权限包含目标三方程序代码对应的第二声明权限的第二进程,并在第二进程中运行目标三方程序代码,可以进一步限缩了三方程序代码的权限范围,减少三方程序代码过度授权的情况,提高了信息安全性。

如图7所示,在一个实施例中,提供一种权限控制装置700,可应用于上述的电子设备,权限控制装置700可包括声明获取模块710及生成模块720。

声明获取模块710,用于获取目标应用程序对应的权限声明信息,权限声明信息包括目标应用程序的一个或多个进程分别对应的进程信息及各个进程对应的第一声明权限。

生成模块720,用于根据权限声明信息,生成目标应用程序对应的权限状态表;权限状态表用于控制各个进程运行时的权限。

在一个实施例中,权限状态表包括各个进程对应的权限状态信息,权限状态信息包括目标应用程序的应用标识、对应进程的进程信息、权限名称及权限授权状态。

在本申请实施例中,获取目标应用程序对应的权限声明信息,该权限声明信息包括目标应用程序的一个或多个进程分别对应的进程信息及各个进程对应的第一声明权限,并根据该权限声明信息,生成目标应用程序对应的权限状态表;权限状态表用于控制各个进程运行时的权限。通过声明进程级别的权限,实现进程级别的权限控制,可以提高权限控制的灵活性,并降低了信息泄露的风险,提高了信息安全性。

在一个实施例中,声明获取模块710,还用于对目标应用程序对应的声明文件中的目标字段进行解析,得到权限声明信息。

在一个实施例中,权限声明信息包括各个进程对应的进程名称及对应的第一声明权限;权限状态信息包括目标应用程序的应用标识、对应进程的进程标识、权限名称及权限授予状态。权限控制装置700还包括第一权限确定模块、标识获取模块及状态表更新模块。

第一权限确定模块,用于当创建第一进程时,根据第一进程的进程名称确定第一进程对应的第一声明权限;第一进程为目标应用程序的任一进程。

标识获取模块,用于获取分配的第一进程对应的进程标识。

状态表更新模块,用于根据第一进程对应的进程标识及对应的第一声明权限,生成第一进程对应的权限状态信息,并将第一进程对应的权限状态信息添加到权限状态表中。

在本申请实施例中,可根据实际的需求在目标应用程序对应的声明文件中,对目标应用程序的各个进程的权限进行声明,实现了进程级别的权限声明,可以提高权限控制的灵活性,可以减少权限过度授予的情况,特别是减少了目标应用程序中运行的三方程序代码权限过度授予的情况,提高了安全性。

在一个实施例中,权限控制装置700还包括第二权限确定模块、进程确定模块及运行模块。

第二权限确定模块,用于当在目标应用程序中加载目标三方程序代码时,获取目标三方程序代码对应的第二声明权限。

进程确定模块,用于根据各个进程对应的第一声明权限及第二声明权限,确定第二进程,第二进程对应的第一声明权限包含第二声明权限。

运行模块,用于在第二进程中运行目标三方程序代码。

在一个实施例中,权限声明信息包括N个子进程分别对应的进程信息及分别对应的第一声明权限;N为对M个权限进行排列组合得到的权限组合的总数量,N个子进程分别对应的第一声明权限为不同的权限组合,M为正整数;第二进程为N个子进程中对应的第一声明权限与第二声明权限一致的子进程。

在一个实施例中,权限状态表包括目标应用程序中的一个或多个三方程序代码分别对应的权限状态信息,权限状态信息包括目标应用程序的应用标识、对应进程的进程信息、对应三方程序代码的程序标识、权限名称及权限授权状态。

在本申请实施例中,当在目标应用程序中加载目标三方程序代码时,可确定对应的第一声明权限包含目标三方程序代码对应的第二声明权限的第二进程,并在第二进程中运行目标三方程序代码,可以进一步限缩了三方程序代码的权限范围,减少三方程序代码过度授权的情况,提高了信息安全性。

图8为一个实施例中电子设备的结构框图。如图8所示,电子设备800可以包括一个或多个如下部件:处理器810、与处理器810耦合的存储器820,其中存储器820可存储有一个或多个计算机程序,一个或多个计算机程序可以被配置为由一个或多个处理器810执行时实现如上述各实施例描述的方法。

处理器810可以包括一个或者多个处理核。处理器810利用各种接口和线路连接整个电子设备800内的各个部分,通过运行或执行存储在存储器820内的指令、程序、代码集或指令集,以及调用存储在存储器820内的数据,执行电子设备800的各种功能和处理数据。可选地,处理器810可以采用数字信号处理(Digital Signal Processing,DSP)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、可编程逻辑阵列(Programmable LogicArray,PLA)中的至少一种硬件形式来实现。处理器810可集成中央处理器(CentralProcessing Unit,CPU)、图像处理器(Graphics Processing Unit,GPU)和调制解调器等中的一种或几种的组合。其中,CPU主要处理操作系统、用户界面和应用程序等;GPU用于负责显示内容的渲染和绘制;调制解调器用于处理无线通信。可以理解的是,上述调制解调器也可以不集成到处理器810中,单独通过一块通信芯片进行实现。

存储器820可以包括随机存储器(Random Access Memory,RAM),也可以包括只读存储器(Read-Only Memory,ROM)。存储器820可用于存储指令、程序、代码、代码集或指令集。存储器820可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作系统的指令、用于实现至少一个功能的指令(比如触控功能、声音播放功能、图像播放功能等)、用于实现上述各个方法实施例的指令等。存储数据区还可以存储电子设备800在使用中所创建的数据等。

可以理解地,电子设备800可包括比上述结构框图中更多或更少的结构元件,例如,包括电源模块、物理按键、WiFi(Wireless Fidelity,无线保真)模块、扬声器、蓝牙模块、传感器等,还可在此不进行限定。

本申请实施例公开一种计算机可读存储介质,其存储计算机程序,其中,该计算机程序被处理器执行时实现如上述各实施例描述的方法。

本申请实施例公开一种计算机程序产品,该计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,且该计算机程序可被处理器执行时实现如上述各实施例描述的方法。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一非易失性计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、ROM等。

如此处所使用的对存储器、存储、数据库或其它介质的任何引用可包括非易失性和/或易失性存储器。合适的非易失性存储器可包括ROM、可编程ROM(Programmable ROM,PROM)、可擦除PROM(Erasable PROM,EPROM)、电可擦除PROM(Electrically ErasablePROM,EEPROM)或闪存。易失性存储器可包括随机存取存储器(random access memory,RAM),它用作外部高速缓冲存储器。作为说明而非局限,RAM可为多种形式,诸如静态RAM(Static RAM,SRAM)、动态RAM(Dynamic Random Access Memory,DRAM)、同步DRAM(synchronous DRAM,SDRAM)、双倍数据率SDRAM(Double Data Rate SDRAM,DDR SDRAM)、增强型SDRAM(Enhanced Synchronous DRAM,ESDRAM)、同步链路DRAM(Synchlink DRAM,SLDRAM)、存储器总线直接RAM(Rambus DRAM,RDRAM)及直接存储器总线动态RAM(DirectRambus DRAM,DRDRAM)。

应理解,说明书通篇中提到的“一个实施例”或“一实施例”意味着与实施例有关的特定特征、结构或特性包括在本申请的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”未必一定指相同的实施例。此外,这些特定特征、结构或特性可以以任意适合的方式结合在一个或多个实施例中。本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本申请所必须的。

在本申请的各种实施例中,应理解,上述各过程的序号的大小并不意味着执行顺序的必然先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。

上述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可位于一个地方,或者也可以分布到多个网络单元上。可根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。

另外,在本申请各实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

以上对本申请实施例公开的一种权限控制方法、装置、电子设备及计算机可读存储介质进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想。同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

相关技术
  • 多目标跟踪方法、装置、设备及存储介质
  • 一种目标跟踪方法、装置、设备及计算机可读存储介质
  • 一种在线数据质量监控方法、装置、服务器及存储介质
  • 一种在线文档检索方法、装置、存储介质及电子设备
  • 存储设备在线检测方法、装置、设备及可读存储介质
  • 一种在线多目标的跟踪方法、装置和存储介质
  • 多目标跟踪方法、多目标跟踪装置以及非易失性存储介质
技术分类

06120116563033