内外部存储中应用数据隔离方法、装置、终端及存储介质与流程

文档序号:19156595发布日期:2019-11-16 00:52阅读:333来源:国知局
内外部存储中应用数据隔离方法、装置、终端及存储介质与流程

本发明涉及数据存储技术领域,尤其涉及一种内外部存储中应用数据隔离方法、装置、终端及存储介质。



背景技术:

随着计算机技术的快速发展,移动应用越来越普及,终端中的应用也越来越多,为解决应用数据的安全问题,安卓系统在内部存储中为不同标识的应用分配有不同的数据目录并设置有对应的访问权限,以将不同的应用的数据进行隔离。然而,对于外部存储而言,系统为所有的数据目录设置了相同的访问权限,因而应用数据之间能够相互共享。数据共享很容易导致数据泄露或者被窃取,尤其是对于具有金融功能的金融应用而言,一旦金融应用数据被第三方应用窃取后,会对使用金融应用的用户造成不可挽回的经济损失。

因此,有必要提供一种新的应用数据隔离方案,确保内外部存储中不同应用的数据之间相互隔离。



技术实现要素:

本发明的主要目的在于提供一种内外部存储中应用数据隔离方法、终端及存储介质,旨在解决内外部存储中不同应用间的数据共享而导致数据泄露的技术问题,通过使用钩子技术,能够对内外部存储中不同应用间的数据进行隔离,有效的保证了应用数据的安全。

为实现上述目的,本发明的第一方面提供一种内外部存储中应用数据隔离方法,所述方法包括:

侦测到应用的启动信号时,执行钩子操作;

分别在内部存储和外部存储中为所述应用分配数据目录以将所述应用进行隔离;

解析本地函数库文件得到多个标准函数;

修改每个所述标准函数为自定义函数;

调用所述自定义函数的接口访问所述数据目录。

在一个可选的实施例中,所述分别在内部存储和外部存储中为所述应用分配数据目录包括:

侦测业务插件是否启动了所述应用的oncreate方法;

当侦测到所述业务插件启动了所述应用的oncreate方法时,分别在所述内部存储和所述外部存储中为所述应用及所述应用的插件分配数据目录。

在一个可选的实施例中,所述分别在所述内部存储和所述外部存储中为所述应用及所述应用的插件分配数据目录包括:

在所述内部存储中根据所述应用的标识为所述应用分配一个内部数据目录及对应设置访问权限,在所述内部数据目录中根据所述应用的插件名称为所述应用的插件分配子内部数据目录及对应设置访问权限;

在所述外部存储中根据所述应用的标识为所述应用分配至少一个外部私有路径及对应设置访问权限,在所述外部数据目录中根据所述应用的插件名称为所述应用的插件至少一个子外部私有路径及对应设置访问权限。

在一个可选的实施例中,所述方法还包括:

预先为所述外部私有路径设置存储空间;

当接收到所述应用数据写入所述外部存储中的指令时,获取所述应用数据的字节数;

判断所述应用数据的字节数是否大于所述存储空间;

当所述应用数据的字节数大于所述存储空间时,在所述外部存储中的多个分区中为所述应用分配多个外部私有路径,使得所述多个外部私有路径的存储空间之和大于所述应用数据的字节数;

将所述应用数据均匀写入所述多个外部私有路径中。

在一个可选的实施例中,在所述调用所述自定义函数的接口访问所述数据目录之前,所述方法还包括:

判断所述自定义函数的接口是否具有访问所述数据目录的合法权限;

当确定所述自定义函数的接口具有访问所述数据目录的合法权限时,允许调用所述自定义函数的接口访问所述数据目录;

当确定所述自定义函数的接口不具有访问所述数据目录的合法权限时,禁止调用所述自定义函数的接口访问所述数据目录。

在一个可选的实施例中,所述判断所述自定义函数的接口是否具有访问所述数据目录的合法权限包括:

获取所述数据目录中的数据的字节数;

判断所述字节数是否大于预设字节数阈值;

当确定所述字节数小于或者等于所述预设字节数阈值时,确定所述自定义函数的接口具有访问所述数据目录的合法权限;

当确定所述字节数大于所述预设字节数阈值时,确定所述自定义函数的接口不具有访问所述数据目录的合法权限。

为实现上述目的,本发明的第二方面提供一种内外部存储中应用数据隔离装置,所述装置包括:

钩子执行模块,用于侦测到应用的启动信号时,执行钩子操作;

目录分配模块,用于分别在内部存储和外部存储中为所述应用分配数据目录以将所述应用进行隔离;

文件解析模块,用于解析本地函数库文件得到多个标准函数;

函数修改模块,用于修改每个所述标准函数为自定义函数;

目录访问模块,用于调用所述自定义函数的接口访问所述数据目录。

在一个可选的实施例中,所述目录分配模块分别在内部存储和外部存储中为所述应用分配数据目录包括:

侦测业务插件是否启动了所述应用的oncreate方法;

当侦测到所述业务插件启动了所述应用的oncreate方法时,分别在所述内部存储和所述外部存储中为所述应用及所述应用的插件分配数据目录。

为实现上述目的,本发明的第三方面提供一种终端,所述终端包括存储器和处理器,所述存储器上存储有可在所述处理器上运行的内外部存储中应用数据隔离的下载程序,所述内外部存储中应用数据隔离的下载程序被所述处理器执行时实现所述的内外部存储中应用数据隔离方法。

为实现上述目的,本发明的第四方面提供一种计算机可读存储介质,所述计算机可读存储介质上存储有内外部存储中应用数据隔离的下载程序,所述内外部存储中应用数据隔离的下载程序可被一个或者多个处理器执行以实现所述的内外部存储中应用数据隔离方法。

本发明实施例所述的内外部存储中应用数据隔离方法、装置、终端及存储介质,通过使用钩子技术,在侦测到应用的启动信号时,执行钩子操作,并在内部存储和外部存储中为所述应用分配数据目录以将所述应用进行隔离,然后解析本地函数库文件得到多个标准函数并修改每个所述标准函数为自定义函数,最后调用所述自定义函数的接口访问所述数据目录,实现了内外部存储中不同应用数据的隔离,及内外部存储中同一应用的不同插件数据的隔离。

附图说明

图1为本发明第一实施例的内外部存储中应用数据隔离方法的流程示意图;

图2为现有技术中应用数据存储于内外部存储中的示意图;

图3为根据本发明所述的方法实现的内外部存储中应用数据隔离的示意图;

图4为本发明第二实施例的内外部存储中应用数据隔离装置的功能模块示意图;

图5为本发明第三实施例的终端的内部结构示意图。

本发明目的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

需要说明的是,在本发明中涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本发明要求的保护范围之内。

为便于更清楚的理解本发明的技术方案,先对现有技术中应用数据存储于内外部存储中的过程进行简要介绍。

参阅图2所示,为现有技术中应用数据存储于内外部存储中的示意图。

系统存储作为系统文件和应用数据的持久化存储空间,可分为内部存储和外部存储。内部存储和外部存储是从物理意义上进行区分的,所述内部存储为系统自带的存储空间,所述外部存储为外置的存储设备。外部存储可以包括:磁盘存储器、磁带存储器和光盘存储器等。

系统中的应用包括系统本身的应用以及用户安装的各种应用。系统可以为每一个应用分配一个标识以进行区分,不同的应用对应的标识完全不同。例如,系统为系统服务分配系统标识,为应用程序分配应用标识。

系统还可以为应用分配数据目录,以将应用数据存储在所分配的数据目录中。

但对于内部存储而言,系统为不同的应用分配不同的数据目录,并为不同的数据目录对应设置不同的访问权限。即,应用数据仅能存储在与所述应用对应的数据目录中,不可以存储在其他数据目录中,应用也仅能从与所述应用对应的数据目录中读取数据,无法从其他数据目录中读取数据。如图2中所示,系统在内部存储空间中为应用程序a、b、c、d、……、z分别分配有数据目录及对应设置访问权限。应用程序a的数据存储在与应用程序a对应的数据目录中,应用程序b的数据存储在与应用程序b对应的数据目录中,以此类推,应用程序z的数据存储在与应用程序z对应的数据目录中。应用程序a仅能从与应用程序a对应的数据目录中读取数据,无法从与应用程序b-z对应的数据目录中读取数据;同样的,应用程序b仅能从与应用程序b对应的数据目录中读取数据,无法从与应用程序a,c-z对应的数据目录中读取数据。

而对于外部存储而言,系统虽为应用分配了数据目录但并没有为不同的数据目录对应设置不同的访问权限,或者为所有的数据目录统一设置了一个相同的访问权限,不同的数据目录中的数据可以相互共享。即,应用可以将数据写入任意一个数据目录中,也可以从任意一个数据目录中读取到数据。如图2中所示,系统在外部存储空间中设置了三个数据分区a、b和c,应用程序a-z的数据既可以存储于分区a中,也可以存储于分区b或分区c中,应用程序a-z还可以从分区a、b和c中的任意一个分区中读取数据。

此外,对于含有多个插件的应用而言,多个插件运行于应用内部,每个插件有自身的生命周期,但拥有与所述应用相同的标识,即应用的多个插件中的每一个插件都有与所述应用相同的标识。如图2中所示,应用程序z包括多个插件a/b/……/z,由于多个插件a/b/……/z的标识与应用程序z的标识相同,因而系统在将应用程序z的数据存储在内部存储空间中与应用程序z对应的数据目录中时,也将应用程序z的多个插件a/b/……/z的数据存储在与应用程序z对应的数据目录中;系统在将应用程序z的数据存储在外部存储空间中的任一分区中时,也将应用程序z的多个插件a/b/……/z的数据存储在任一分区中。

由此可见,现有技术中,对于外部存储而言,应用数据及应用的插件数据并没有相互隔离,而是全部数据共享;对于内部存储而言,虽然应用数据做到了相互隔离,但是对于应用的插件数据也没有相互隔离,而是在该应用的多个插件间进行数据共享。

因此,本发明要解决的技术问题包括:内外部存储中应用数据的相互隔离;内外部存储中应用的插件数据的相互隔离。

实施例一

参阅图1所示,为本发明第一实施例揭露的内外部存储中应用数据隔离方法的流程图。

所述内外部存储中应用数据隔离方法,应用于终端中,具体包括以下步骤,根据不同的需求,该流程图中步骤的顺序可以改变,某些步骤可以省略。

s11,侦测到应用的启动信号时,执行钩子操作。

本实施例中,终端内安装有操作系统,例如,android操作系统,苹果的ios操作系统,windowsphone操作系统,塞班操作系统等。下文以android操作系统为例进行举例说明,但并不限制于所述android操作。

终端提供有系统服务功能。所述系统服务为系统的服务控制中心,负责应用的安装、启动,给不同应用分配不同的标识,创建并启动虚拟机以及监控应用的运行状态。

终端通过系统服务实时检测应用的运行状态,并在侦测到应用的启动信号时,使用钩子(hook)函数,通过钩子程序先捕获消息,得到控制权,从而改变函数的执行行为,或者强制结束消息的传递。

s12,分别在内部存储和外部存储中为所述应用分配数据目录以将所述应用进行隔离。

在执行钩子操作后,系统服务在内部存储和外部存储中为所述应用分配数据目录。由于应用在内部存储中和外部存储中均有对应的数据目录,则后续将应用数据写入所分配的数据目录中,即可做到应用数据的隔离,避免其他应用的读取。

在一个可选的实施例中,所述分别在内部存储和外部存储中为所述应用分配数据目录包括:

侦测业务插件是否启动了所述应用的oncreate方法;

当侦测到所述业务插件启动了所述应用的oncreate方法时,分别在所述内部存储和所述外部存储中为所述应用及所述应用的插件分配数据目录。

应用插件是任务主体,负责核心业务的处理,根据配置的任务信息,动态执行相应逻辑,并将结果在本地保存或上报至服务器。应用插件以独立进程运行在虚拟机中,具有隔离的数据和地址空间。而插件框架是插件运行依赖的容器,负责所有插件的安装、启动、停止、卸载、升级等任务。

在该可选的实施例中,在应用启动后,通过侦测插件框架是否启动了应用的oncreate方法,如果插件框架启动了应用的oncreate方法,则表明所述应用为包含有插件的应用,如果插件框架没有启动应用的oncreate方法,则表明所述应用为不包含有插件的应用。对于不包含有任何插件的应用,则只需要在所述内部存储中为所述应用分配一个数据目录,及在所述外部存储中为所述应用分配一个数据目录。而对于包含有插件的应用,则不仅要在内部存储和外部存储中分别为应用分配一个数据目录,还需要为应用的插件在所分配的数据目录中分配子数据目录。如此,包含有插件的应用数据可以存储于所述数据目录中,而所述应用的插件数据则可以存储于所述数据目录的子数据目录中。

具体的,所述分别在所述内部存储和所述外部存储中为所述应用及所述应用的插件分配数据目录可以包括:

在所述内部存储中根据所述应用的标识为所述应用分配一个内部数据目录及对应设置访问权限,在所述内部数据目录中根据所述应用的插件名称为所述应用的插件分配子内部数据目录及对应设置访问权限;

在所述外部存储中根据所述应用的标识为所述应用分配至少一个外部私有路径及对应设置访问权限,在所述外部数据目录中根据所述应用的插件名称为所述应用的插件至少一个子外部私有路径及对应设置访问权限。

对于内部存储,由于系统服务在应用安装时即会为所述应用分配一个唯一的标识,则可以根据所述应用的唯一的标识在内部存储中创建一个内部数据目录,并通过设置相应的访问权限,允许所述应用访问所述内部数据目录,并禁止其他应用访问所述内部数据目录,如此便实现了内部存储中应用数据的隔离。对于包含有插件的应用,由于插件的标识与应用的标识相同,因而插件的数据也是存储于所述应用的内部数据目录中,此时,通过插件的名称在已经分配的内部数据目录中分配出子内部数据目录。由于不同的插件的名称不同及配合对应设置访问权限,便能够实现内部存储中同一个应用的不同插件间的数据的隔离。

对于内部存储,则通过根据应用的标识为应用分配外部私有路径并配合设置相应的访问权限,运行所述应用访问所述外部私有路径,并禁止其他应用访问所述外部私有路径,如此便实现了外部存储中应用数据的隔离。对于包含有插件的应用,通过插件的名称在已经分配的外部私有路径中分配出子外部私有路径,由于不同的插件的名称不同及配合对应设置访问权限,便能够实现外部存储中同一个应用的不同插件间的数据的隔离。

s13,解析本地函数库文件得到多个标准函数。

本地函数库文件中存储有多个标准函数及每个标准函数在内存中的访问地址。通过对本地函数库文件进行解析,即可获取到存储于本地函数库文件中的多个标准函数。

s14,修改每个所述标准函数为自定义函数。

系统预先设置了多个自定义函数,所述自定义函数是指通过钩子技术“接触”到所述标准函数的接口,改变标准函数在内存中的访问地址使接口指向新的自定义函数对应的访问接口。即通过钩子技术对所述标准函数进行修改,使其改变标准函数的原有功能。

示例性的,如下表格所示的:

示例性的,假设从本地函数库文件中解析得到的标准函数为create,标准函数create对应的原有的访问为接口1,通过钩子技术修改标准函数create为自定义函数hk_create,而自定义函数hk_create对应的访问接口为接口11,由此,通过钩子技术便改变了标准函数create的原有功能,改变了标准函数create的访问接口,使得指向新的访问接口。

s15,调用所述自定义函数的接口访问所述数据目录。

修改标准函数为自定义函数之后,即可调用自定义函数的接口访问在内部存储和外部存储中的数据目录。

所述访问可以包括:创建、查询、读、写、删除等。

在一个可选的实施例中,在所述调用所述自定义函数的接口访问所述数据目录之前,所述方法还包括:

判断所述自定义函数的接口是否具有访问所述数据目录的合法权限;

当确定所述自定义函数的接口具有访问所述数据目录的合法权限时,允许调用所述自定义函数的接口访问所述数据目录;

当确定所述自定义函数的接口不具有访问所述数据目录的合法权限时,禁止调用所述自定义函数的接口访问所述数据目录。

在该可选的实施例中,插件在执行过程中凡是有对磁盘的任何操作,都会通过执行钩子操作调用自定义函数来判断其访问路径的合法性,从而进一步确保应用数据及插件数据的安全性。

在一个可选的实施例中,所述判断所述自定义函数的接口是否具有访问所述数据目录的合法权限包括:

获取所述数据目录中的数据的字节数;

判断所述字节数是否大于预设字节数阈值;

当确定所述字节数小于或者等于所述预设字节数阈值时,确定所述自定义函数的接口具有访问所述数据目录的合法权限;

当确定所述字节数大于所述预设字节数阈值时,确定所述自定义函数的接口不具有访问所述数据目录的合法权限。

在该可选的实施例中,调用所述自定义函数的接口访问所述数据目录时,先获取所述数据目录中的数据的字节数,通过字节数的大小确定自定义函数的接口是否具有访问数据目录的合法权限。例如,当数据目录中的数据的字节数较大时,若通过调用所述自定义函数的接口访问所述数据目录,将应用数据继续写入所述数据目录中,则会导致所述数据目录被写满,从而影响磁盘的运行效率。因此,对于数据目录中的数据已经较大时,对应用数据的写入操作进行拦截,以此避免磁盘被写满,确保了操作系统的稳定性能。

在一个可选的实施例中,所述方法还包括:

预先为所述外部私有路径设置存储空间;

当接收到所述应用数据写入所述外部存储中的指令时,获取所述应用数据的字节数;

判断所述应用数据的字节数是否大于所述存储空间;

当所述应用数据的字节数大于所述存储空间时,在所述外部存储中的多个分区中为所述应用分配多个外部私有路径,使得所述多个外部私有路径的存储空间之和大于所述应用数据的字节数;

将所述应用数据均匀写入所述多个外部私有路径中。

在该可选的实施例中,对于外部存储,如果不加以限制地任由某个应用去写入数据,则会导致某个磁盘空间被占满,磁盘空间被占满后,将会导致系统运行缓慢甚至发生瘫痪,对于未被占满的磁盘空间,则是资源的浪费。对于写入外部存储的情况,则可以通过动态分配多个外部私有路径,即在多个分区中分配外部私有路径,当某一个分区中的外部私有路径写满应用数据之后,可以继续将应用数据写入另一个分区的外部私有路径中,做到了外部私有路径大小空间限制。

请参阅图3所示,为使用本发明所述的方法实现的内外部存储中数据隔离的示意图。

系统中有多个应用程序,例如,应用程序a和应用程序z,当侦测到应用程序a和应用程序z的启动信号时,执行钩子操作。根据应用程序a的标识在内部存储中为应用程序a分配了内部数据目录及设置了对应的访问权限,在外部存储中为应用程序a分配了至少一个外部私有路径及设置了对应的访问权限。例如,在外部存储的分区a中为应用程序a分配了一个外部私有路径,在外部存储的分区b中为应用程序a分配了一个外部私有路径。根据应用程序z的标识在内部存储中为应用程序a分配了内部数据目录及设置了对应的访问权限,并根据应用程序z的插件名称为应用程序z的插件a/b/c/……/z分别在内部数据目录中分配了子内部数据目录,在外部存储中为应用程序z分配了至少一个外部私有路径及设置对应的访问权限,并根据应用程序z的插件名称为应用程序z的插件a/b/c/……/z分别在外部私有路径中分配了子外部私有路径。例如,在外部存储的分区a中为应用程序z分配了一个外部私有路径,及在分区a的所述外部私有路径中分别为插件a/b/c/……/z分配了一个子外部私有路径,在外部存储的分区b中为应用程序z分配了一个外部私有路径,及在分区b的所述外部私有路径中分别为插件a/b/c/……/z分配了一个子外部私有路径。

接下来,通过解析本地函数库文件得到多个标准函数,并修改每个所述标准函数为自定义函数,最后调用所述自定义函数的接口访问所述数据目录,实现了:

1)内部存储中应用的插件数据的隔离,例如,将应用程序z的各个插件写入与应用程序z对应的内部数据目录中且与各个插件对应的子内部数据目录中,能够有效地隔离同一个应用的不同插件间的数据空间;

2)外部存储中应用数据的隔离,例如,将应用程序a写入与应用程序a对应的外部私有路径中,将应用程序z写入与应用程序z对应的外部私有路径中,能够有效地隔离不同应用间的数据空间;

3)外部存储中应用的插件数据的隔离,例如,将应用程序z的各个插件写入与应用程序z对应的外部私有路径中且与各个插件对应的子外部私有路径中,能够有效地隔离同一个应用的不同插件间的数据空间。

即,通过本发明所述的方法能够实现内外部存储中不同应用数据的隔离,及内外部存储中同一应用的不同插件数据的隔离。

实施例二

参阅图4所示,为本发明实施例二揭露的内外部存储中应用数据隔离装置的功能模块示意图。

在一些实施例中,所述内外部存储中应用数据隔离装置40运行于资源服务器中。所述内外部存储中应用数据隔离装置40可以包括多个由程序代码段所组成的功能模块。所述内外部存储中应用数据隔离装置40中的各个程序段的程序代码可以存储于终端的存储器中,并由所述至少一个处理器所执行,以执行(详见图1描述)内外部存储中的应用数据隔离方法。

本实施例中,所述内外部存储中应用数据隔离装置40根据其所执行的功能,可以被划分为多个功能模块。所述功能模块可以包括:钩子执行模块401、目录分配模块402、文件解析模块403、函数修改模块404、目录访问模块405、权限判断模块406、空间设置模块407及字节获取模块408。本发明所称的模块是指一种能够被至少一个处理器所执行并且能够完成固定功能的一系列计算机程序段,其存储在存储器中。在本实施例中,关于各模块的功能将在后续的实施例中详述。

钩子执行模块401,用于侦测到应用的启动信号时,执行钩子操作。

本实施例中,终端内安装有操作系统,例如,android操作系统,苹果的ios操作系统,windowsphone操作系统,塞班操作系统等。下文以android操作系统为例进行举例说明,但并不限制于所述android操作。

终端提供有系统服务功能。所述系统服务为系统的服务控制中心,负责应用的安装、启动,给不同应用分配不同的标识,创建并启动虚拟机以及监控应用的运行状态。

终端通过系统服务实时检测应用的运行状态,并在侦测到应用的启动信号时,使用钩子(hook)函数,通过钩子程序先捕获消息,得到控制权,从而改变函数的执行行为,或者强制结束消息的传递。

目录分配模块402,用于分别在内部存储和外部存储中为所述应用分配数据目录以将所述应用进行隔离。

在执行钩子操作后,系统服务在内部存储和外部存储中为所述应用分配数据目录。由于应用在内部存储中和外部存储中均有对应的数据目录,则后续将应用数据写入所分配的数据目录中,即可做到应用数据的隔离,避免其他应用的读取。

在一个可选的实施例中,所述目录分配模块402分别在内部存储和外部存储中为所述应用分配数据目录包括:

侦测业务插件是否启动了所述应用的oncreate方法;

当侦测到所述业务插件启动了所述应用的oncreate方法时,分别在所述内部存储和所述外部存储中为所述应用及所述应用的插件分配数据目录。

应用插件是任务主体,负责核心业务的处理,根据配置的任务信息,动态执行相应逻辑,并将结果在本地保存或上报至服务器。应用插件以独立进程运行在虚拟机中,具有隔离的数据和地址空间。而插件框架是插件运行依赖的容器,负责所有插件的安装、启动、停止、卸载、升级等任务。

在该可选的实施例中,在应用启动后,通过侦测插件框架是否启动了应用的oncreate方法,如果插件框架启动了应用的oncreate方法,则表明所述应用为包含有插件的应用,如果插件框架没有启动应用的oncreate方法,则表明所述应用为不包含有插件的应用。对于不包含有任何插件的应用,则只需要在所述内部存储中为所述应用分配一个数据目录,及在所述外部存储中为所述应用分配一个数据目录。而对于包含有插件的应用,则不仅要在内部存储和外部存储中分别为应用分配一个数据目录,还需要为应用的插件在所分配的数据目录中分配子数据目录。如此,包含有插件的应用数据可以存储于所述数据目录中,而所述应用的插件数据则可以存储于所述数据目录的子数据目录中。

具体的,所述分别在所述内部存储和所述外部存储中为所述应用及所述应用的插件分配数据目录可以包括:

在所述内部存储中根据所述应用的标识为所述应用分配一个内部数据目录及对应设置访问权限,在所述内部数据目录中根据所述应用的插件名称为所述应用的插件分配子内部数据目录及对应设置访问权限;

在所述外部存储中根据所述应用的标识为所述应用分配至少一个外部私有路径及对应设置访问权限,在所述外部数据目录中根据所述应用的插件名称为所述应用的插件至少一个子外部私有路径及对应设置访问权限。

对于内部存储,由于系统服务在应用安装时即会为所述应用分配一个唯一的标识,则可以根据所述应用的唯一的标识在内部存储中创建一个内部数据目录,并通过设置相应的访问权限,允许所述应用访问所述内部数据目录,并禁止其他应用访问所述内部数据目录,如此便实现了内部存储中应用数据的隔离。对于包含有插件的应用,由于插件的标识与应用的标识相同,因而插件的数据也是存储于所述应用的内部数据目录中,此时,通过插件的名称在已经分配的内部数据目录中分配出子内部数据目录。由于不同的插件的名称不同及配合对应设置访问权限,便能够实现内部存储中同一个应用的不同插件间的数据的隔离。

对于内部存储,则通过根据应用的标识为应用分配外部私有路径并配合设置相应的访问权限,运行所述应用访问所述外部私有路径,并禁止其他应用访问所述外部私有路径,如此便实现了外部存储中应用数据的隔离。对于包含有插件的应用,通过插件的名称在已经分配的外部私有路径中分配出子外部私有路径,由于不同的插件的名称不同及配合对应设置访问权限,便能够实现外部存储中同一个应用的不同插件间的数据的隔离。

文件解析模块403,用于解析本地函数库文件得到多个标准函数。

本地函数库文件中存储有多个标准函数及每个标准函数在内存中的访问地址。通过对本地函数库文件进行解析,即可获取到存储于本地函数库文件中的多个标准函数。

函数修改模块404,用于修改每个所述标准函数为自定义函数。

系统预先设置了多个自定义函数,所述自定义函数是指通过钩子技术“接触”到所述标准函数的接口,改变标准函数在内存中的访问地址使接口指向新的自定义函数对应的访问接口。即通过钩子技术对所述标准函数进行修改,使其改变标准函数的原有功能。

示例性的,如下表格所示的:

示例性的,假设从本地函数库文件中解析得到的标准函数为create,标准函数create对应的原有的访问为接口1,通过钩子技术修改标准函数create为自定义函数hk_create,而自定义函数hk_create对应的访问接口为接口11,由此,通过钩子技术便改变了标准函数create的原有功能,改变了标准函数create的访问接口,使得指向新的访问接口。

目录访问模块405,用于调用所述自定义函数的接口访问所述数据目录。

修改标准函数为自定义函数之后,即可调用自定义函数的接口访问在内部存储和外部存储中的数据目录。

所述访问可以包括:创建、查询、读、写、删除等。

在一个可选的实施例中,在所述调用所述自定义函数的接口访问所述数据目录之前,所述内外部存储中应用数据隔离装置40还包括权限判断模块406,用于:判断所述自定义函数的接口是否具有访问所述数据目录的合法权限;

当确定所述自定义函数的接口具有访问所述数据目录的合法权限时,所述目录访问模块405,还用于允许调用所述自定义函数的接口访问所述数据目录;

当确定所述自定义函数的接口不具有访问所述数据目录的合法权限时,所述目录访问模块405,还用于禁止调用所述自定义函数的接口访问所述数据目录。

在该可选的实施例中,插件在执行过程中凡是有对磁盘的任何操作,都会通过执行钩子操作调用自定义函数来判断其访问路径的合法性,从而进一步确保应用数据及插件数据的安全性。

在一个可选的实施例中,所述权限判断模块406判断所述自定义函数的接口是否具有访问所述数据目录的合法权限包括:

获取所述数据目录中的数据的字节数;

判断所述字节数是否大于预设字节数阈值;

当确定所述字节数小于或者等于所述预设字节数阈值时,确定所述自定义函数的接口具有访问所述数据目录的合法权限;

当确定所述字节数大于所述预设字节数阈值时,确定所述自定义函数的接口不具有访问所述数据目录的合法权限。

在该可选的实施例中,调用所述自定义函数的接口访问所述数据目录时,先获取所述数据目录中的数据的字节数,通过字节数的大小确定自定义函数的接口是否具有访问数据目录的合法权限。例如,当数据目录中的数据的字节数较大时,若通过调用所述自定义函数的接口访问所述数据目录,将应用数据继续写入所述数据目录中,则会导致所述数据目录被写满,从而影响磁盘的运行效率。因此,对于数据目录中的数据已经较大时,对应用数据的写入操作进行拦截,以此避免磁盘被写满,确保了操作系统的稳定性能。

在一个可选的实施例中,所述内外部存储中应用数据隔离装置40还包括:

空间设置模块407,用于预先为所述外部私有路径设置存储空间;

字数获取模块408,用于当接收到所述应用数据写入所述外部存储中的指令时,获取所述应用数据的字节数;

权限判断模块406,还用于判断所述应用数据的字节数是否大于所述存储空间;

所述目录访问模块405,还用于当所述应用数据的字节数大于所述存储空间时,在所述外部存储中的多个分区中为所述应用分配多个外部私有路径,使得所述多个外部私有路径的存储空间之和大于所述应用数据的字节数;

将所述应用数据均匀写入所述多个外部私有路径中。

在该可选的实施例中,对于外部存储,如果不加以限制地任由某个应用去写入数据,则会导致某个磁盘空间被占满,磁盘空间被占满后,将会导致系统运行缓慢甚至发生瘫痪,对于未被占满的磁盘空间,则是资源的浪费。对于写入外部存储的情况,则可以通过动态分配多个外部私有路径,即在多个分区中分配外部私有路径,当某一个分区中的外部私有路径写满应用数据之后,可以继续将应用数据写入另一个分区的外部私有路径中,做到了外部私有路径大小空间限制。

请参阅图3所示,为使用本发明所述的装置实现的内外部存储中数据隔离的示意图。

系统中有多个应用程序,例如,应用程序a和应用程序z,当侦测到应用程序a和应用程序z的启动信号时,执行钩子操作。根据应用程序a的标识在内部存储中为应用程序a分配了内部数据目录及设置了对应的访问权限,在外部存储中为应用程序a分配了至少一个外部私有路径及设置了对应的访问权限。例如,在外部存储的分区a中为应用程序a分配了一个外部私有路径,在外部存储的分区b中为应用程序a分配了一个外部私有路径。根据应用程序z的标识在内部存储中为应用程序a分配了内部数据目录及设置了对应的访问权限,并根据应用程序z的插件名称为应用程序z的插件a/b/c/……/z分别在内部数据目录中分配了子内部数据目录,在外部存储中为应用程序z分配了至少一个外部私有路径及设置对应的访问权限,并根据应用程序z的插件名称为应用程序z的插件a/b/c/……/z分别在外部私有路径中分配了子外部私有路径。例如,在外部存储的分区a中为应用程序z分配了一个外部私有路径,及在分区a的所述外部私有路径中分别为插件a/b/c/……/z分配了一个子外部私有路径,在外部存储的分区b中为应用程序z分配了一个外部私有路径,及在分区b的所述外部私有路径中分别为插件a/b/c/……/z分配了一个子外部私有路径。

接下来,通过解析本地函数库文件得到多个标准函数;,并修改每个所述标准函数为自定义函数,最后调用所述自定义函数的接口访问所述数据目录,实现了:

1)内部存储中应用的插件数据的隔离,例如,将应用程序z的各个插件写入与应用程序z对应的内部数据目录中且与各个插件对应的子内部数据目录中,能够有效地隔离同一个应用的不同插件间的数据空间;

2)外部存储中应用数据的隔离,例如,将应用程序a写入与应用程序a对应的外部私有路径中,将应用程序z写入与应用程序z对应的外部私有路径中,能够有效地隔离不同应用间的数据空间;

3)外部存储中应用的插件数据的隔离,例如,将应用程序z的各个插件写入与应用程序z对应的外部私有路径中且与各个插件对应的子外部私有路径中,能够有效地隔离同一个应用的不同插件间的数据空间。

即,通过本发明所述的装置能够实现内外部存储中不同应用数据的隔离,及内外部存储中同一应用的不同插件数据的隔离。

实施例三

图5为本发明实施例揭露的终端的内部结构示意图。

在本实施例中,终端5可以是固定终端,也可以是移动终端,可以是指客户端,也可以是指服务器。

所述终端5可以包括存储器51、处理器52和总线53。

其中,存储器51至少包括一种类型的可读存储介质,所述可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,sd或dx存储器等)、磁性存储器、磁盘、光盘等。存储器51在一些实施例中可以是所述终端5的内部存储单元,例如所述终端5的硬盘。存储器51在另一些实施例中也可以是所述终端5的外部存储设备,例如所述终端5上配备的插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)等。进一步地,存储器51还可以既包括所述终端5的内部存储单元也包括外部存储设备。存储器51不仅可以用于存储安装于所述终端5的应用应用程序及各类数据,例如内外部存储中应用数据隔离装置40的代码等及各个模块,还可以用于暂时地存储已经输出或者将要输出的数据。

处理器52在一些实施例中可以是一中央处理器(centralprocessingunit,cpu)、控制器、微控制器、微处理器或其他数据处理芯片,用于运行存储器51中存储的程序代码或处理数据。

该总线53可以是外设部件互连标准(peripheralcomponentinterconnect,pci)总线或扩展工业标准结构(extendedindustrystandardarchitecture,eisa)总线等。该总线可以分为地址总线、数据总线、控制总线等。为便于表示,图5中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。

进一步地,所述终端5还可以包括网络接口,网络接口可选的可以包括有线接口和/或无线接口(如wi-fi接口、蓝牙接口等),通常用于在该终端5与其他终端之间建立通信连接。

可选地,该终端5还可以包括用户接口,用户接口可以包括显示器(display)、输入单元比如键盘(keyboard),可选的用户接口还可以包括标准的有线接口、无线接口。可选地,在一些实施例中,显示器可以是led显示器、液晶显示器、触控式液晶显示器以及有机发光二极管(organiclight-emittingdiode,oled)触摸器等。其中,显示器也可以适当的称为显示屏或显示单元,用于显示在所述终端中处理的消息以及用于显示可视化的用户界面。

图5仅示出了具有组件51-53的所述终端5,本领域技术人员可以理解的是,图5示出的结构并不构成对所述终端5的限定,既可以是总线型结构,也可以是星形结构,所述终端5还可以包括比图示更少或者更多的部件,或者组合某些部件,或者不同的部件布置。其他现有的或今后可能出现的电子产品如可适应于本发明,也应包含在本发明的保护范围以内,并以引用方式包含于此。

在上述实施例中,可以全部或部分地通过应用程序、硬件、固件或者其任意组合来实现。当使用应用程序实现时,可以全部或部分地以计算机程序产品的形式实现。

所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如,同轴电缆、光纤、数字用户线)或无线(例如,红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存储的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带),光介质(例如,dvd),或者半导体介质(例如,固态硬盘(solidstatedisk,ssd))等。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

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

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

所述集成的单元如果以应用程序功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以应用程序产品的形式体现出来,该计算机应用程序产品存储在一个存储介质中,包括若干指令用以使得一台终端(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。

需要说明的是,上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。并且本文中的术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、物品或者方法不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、物品或者方法所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、物品或者方法中还存在另外的相同要素。

以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1