一种数据筛选方法和装置与流程

文档序号:14554311阅读:178来源:国知局
一种数据筛选方法和装置与流程

本发明涉及计算机技术领域,尤其涉及一种数据筛选方法和装置。



背景技术:

现有技术中,具体如图1所示,在进行系统调用时,系统调用所使用到的数据都会被压入到寄存器中,并根据压入到寄存器中的数据进行系统调用,进行系统调用的参数主要分为:值类型和引用类型,对于值类型的参数,是将对应值直接压入寄存器中,对于引用类型的参数,是将对应的地址压入寄存器中,而引用类型对应值是存储在了用户空间内,当进行系统调用后,寄存器中的值类型和引用类型会被压入内核空间的栈中,进而对内核空间的栈中的数据进行筛选。

在实现本发明过程中,发明人发现现有技术中至少存在如下问题:

由于在对内核空间的栈中的数据进行筛选时,只能识别值类型参数,而无法识别引用类型参数,因此在对内核空间的栈中的数据进行筛选时无法对引用类型参数进行筛选。



技术实现要素:

有鉴于此,本方案实施例提供了一种数据筛选方法和装置,用以解决现有技术中在对栈中的数据进行筛选时无法对引用类型参数进行筛选的问题。

第一方面,本方案实施例提供了一种数据筛选方法,包括:

将用户空间内存储的第一数据拷贝到内核空间;

对所述内核空间中存储的第二数据和所述第一数据进行过滤。

如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述第一数据包括引用类型的数据;

所述第二数据包括值类型的数据。

如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,将用户空间内存储的第一数据拷贝到内核空间,包括:

调用指定函数,将用户空间内存储的第一数据拷贝到内核空间。

如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述数据筛选方法执行于内核内存。

上述技术方案中的一个技术方案具有如下有益效果:在本方案实施例中,将用户空间内存储的第一数据拷贝到内核空间后,内核空间就得到用户空间内存储的数据,从而可以对内核空间中存储的第二数据,以及用户空间内存储的第一数据进行过滤,进一步的,由于用户空间内存储了引用类型对应的值,在将用户空间内存储的第一数据拷贝到内核空间后,内核空间就可以得到引用类型对应值,因此在对内核空间中存储的第二数据和所述第一数据进行过滤时,实现了对引用类型参数的筛选。

第二方面,本方案实施例提供了一种数据筛选装置,包括:

拷贝单元,用于将用户空间内存储的第一数据拷贝到内核空间;

过滤单元,用于对所述内核空间中存储的第二数据和所述第一数据进行过滤。

如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述第一数据包括引用类型的数据;

所述第二数据包括值类型的数据。

如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,

所述拷贝单元用于将用户空间内存储的第一数据拷贝到内核空间时,包括:

调用指定函数,将用户空间内存储的第一数据拷贝到内核空间。

如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述数据筛选方法执行于内核内存。

上述技术方案中的一个技术方案具有如下有益效果:在本方案实施例中,拷贝单元将用户空间内存储的第一数据拷贝到内核空间后,内核空间就得到用户空间内存储的数据,过滤单元从而可以对内核空间中存储的第二数据,以及用户空间内存储的第一数据进行过滤,进一步的,由于用户空间内存储了引用类型对应的值,在将用户空间内存储的第一数据拷贝到内核空间后,内核空间就可以得到引用类型对应值,因此在对内核空间中存储的第二数据和所述第一数据进行过滤时,实现了对引用类型参数的筛选。

第三方面,本方案实施例提供了一种存储程序的非易失性计算机可读存储介质,该程序使数据筛选装置执行数据筛选方法,所述方法包括以下步骤:

将用户空间内存储的第一数据拷贝到内核空间;

对所述内核空间中存储的第二数据和所述第一数据进行过滤。

上述技术方案中的一个技术方案具有如下有益效果:在本方案实施例中,拷贝单元将用户空间内存储的第一数据拷贝到内核空间后,内核空间就得到用户空间内存储的数据,过滤单元从而可以对内核空间中存储的第二数据,以及用户空间内存储的第一数据进行过滤,进一步的,由于用户空间内存储了引用类型对应的值,在将用户空间内存储的第一数据拷贝到内核空间后,内核空间就可以得到引用类型对应值,因此在对内核空间中存储的第二数据和所述第一数据进行过滤时,实现了对引用类型参数的筛选。

【附图说明】

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

图1是现有技术中数据筛选的示例图;

图2是本方案实施例一所提供的一种数据筛选方法的流程示意图;

图3是本方案实施例三所提供的一种数据筛选的示意图;

图4是本方案实施例三所提供的另一种数据筛选的示意图;

图5是本方案实施例四所提供的一种数据筛选装置的结构示意图;

图6为本方案实施例五中提出的一种服务器100的简化框图。

【具体实施方式】

为了更好的理解本发明的技术方案,下面结合附图对本方案实施例进行详细描述。

应当明确,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。

在本方案实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明。在本方案实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。

应当理解,本文中使用的术语“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。

应当理解,尽管在本方案实施例中可能采用术语第一、第二等来描述数据,但这些数据不应限于这些术语。这些术语仅用来将数据彼此区分开。例如,在不脱离本方案实施例范围的情况下,第一数据也可以被称为第二数据,类似地,第二数据也可以被称为第一数据。

取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”或“响应于检测”。类似地,取决于语境,短语“如果确定”或“如果检测(陈述的条件或事件)”可以被解释成为“当确定时”或“响应于确定”或“当检测(陈述的条件或事件)时”或“响应于检测(陈述的条件或事件)”。

实施例一

用户态是指不可以进行超级用户root权限操作的状态,是执行用户命令时的运行模式,在此状态下,执行的代码被硬件限定,不可以进行某些操作,例如,将数据写入其他进程对应的存储空间,或者进行系统调用等,其中,执行用户态命令时需要用到的数据或代码存储在第一指定空间内,该第一指定空间为用户空间;内核态是指可以进行root权限操作的状态,是执行操作系统命令时的运行模式,在此状态下,执行的代码可以无限制的对系统存储或外部设备进行访问等,其中,执行内核态命令时需要用到的数据或代码存储在第二指定空间内,该第二指定空间为内核空间。用户空间的应用程序,通过系统调用后才可以进入内核空间,在用户空间的应用程序进入内核空间后,用户空间的应用程序对应的进程需要将对应的参数和变量发送给内核空间,并且内核空间需要保存用户空间运行该应用程序时的进程对应的寄存器地址。

由于在对内核空间中的数据进行筛选时,只能识别值类型参数,而无法识别引用类型参数,对于引用类型参数,在内核空间中存储的是对应的地址,该地址指向的是用户空间中对应的值,该值是可以被内核空间识别的,因此本方案实施例给出一种数据筛选方法,请参考图2,其为本方案实施例所提供的方法的流程示意图,如图2所示,所述数据筛选方法执行于内核内存,该方法包括以下步骤:

201、将用户空间内存储的第一数据拷贝到内核空间。

其中,所述第一数据包括引用类型的数据。

具体的,在进行系统调用后,当压入内核空间的栈中的参数类型为引用类型时,根据栈中引用类型对应的地址,将对应的存储在用户空间中的数据拷贝到内核空间中,此时,内核空间的栈中包含了引用类型对应的数据,进一步的,引用类型对应的值也被压入了内核空间的栈中,此时,通过压入内核空间的栈中的数据就可以知道压入内核空间的栈中的引用类型对应值。当然,由于内核空间中引用类型对应的值都存储在了用户空间中,在进行系统调用后,可以将用户空间内存储的引用类型的数据,即引用类型对应的值全部拷贝到内核空间,并压入栈中,在将引用类型对应的值全部拷贝到内核空间后,根据压入到栈中的引用类型的值的地址,对存储在该栈中的对应的引用类型的地址进行修改,以根据修改后的地址查找到对应的引用类型的值。

202、对所述内核空间中存储的第二数据和所述第一数据进行过滤。

其中,所述第二数据包括值类型的数据。

具体的,在对内核空间中存储的值类型和引用类型进行过滤时,由于已将引用类型对应的值从用户空间拷贝到内核空间中,因此,在内核空间中就可以知道引用类型对应的值,进一步的,此时内核空间中进行过滤的参数均为值类型,进而可以对内核空间中存储的第二数据和从用户空间拷贝到内核空间的第一数据进行过滤。

在对第一数据和第二数据进行过滤时,根据预先设置的过滤策略进行过滤,当第一数据和/或第二数据满足过滤策略时,则继续执行系统调用逻辑,当第一数据和/或第二数据满足过滤策略时,则返回执行结果,其中,过滤操作在预先设置的沙箱中进行。

在本方案实施例中,将用户空间内存储的第一数据拷贝到内核空间后,内核空间就得到用户空间内存储的数据,从而可以对内核空间中存储的第二数据,以及用户空间内存储的第一数据进行过滤,进一步的,由于用户空间内存储了引用类型对应的值,在将用户空间内存储的第一数据拷贝到内核空间后,内核空间就可以得到引用类型对应值,因此在对内核空间中存储的第二数据和所述第一数据进行过滤时,实现了对引用类型参数的筛选。

实施例二

由于用户空间中的数据对于内核空间来说是不可见的,即内核空间通过地址无法找到用户空间中存储的数据,因此在本方案实施例中提供了一种针对步骤201的具体实现方式,该实现方式具体为:

调用指定函数,将用户空间内存储的第一数据拷贝到内核空间。

具体的,该指定函数具有将用户空间内存储的第一数据拷贝到内核空间的功能,在需要将用户空间内存储的第一数据拷贝到内核空间时,调用该指定函数,根据内核空间内存储的第一数据的地址,将用户空间内存储的第一数据拷贝到内核空间,在本方案实施例中,该指定函数记为copy_from_user函数。

进一步的,在需要将用户空间内存储的引用类型的值拷贝到内核空间时,调用copy_from_user函数,根据内核空间内存储的该引用类型的地址,将对应的值从用户空间拷贝到内核空间。

实施例三

为了进一步阐述本方案的技术思想,现结合具体的应用场景,对本方案的技术方案进行说明,具体的,在云计算场景下,一台云计算服务器可以为多个用户提供服务,但是只允许用户打开自身路径下的所有文件,而不允许打开其他路径下的文件,在用户想要打开自身路径下的文件或其他路径下的文件时,都是通过引用类型参数实现的,具体如图3所示,当用户将打开文件的引用类型参数的命令发送到云计算服务器中后,该方法包括以下步骤:

1、云计算服务器将引用类型参数的地址压入寄存器中,将引用类型参数的值压入用户空间内存储。

其中,该地址指向用户空间内存储的该值。

2、在云计算服务器进行系统调用时,将寄存器中的地址压入内核空间的栈中。

3、云计算服务器根据该地址,通过copy_from_user函数将该值从用户空间拷贝到寄存器中,并将该值压入栈中。

4、对栈中的值进行过滤。

其中,如果该值表示打开用户a自身路径下的文件,则打开对应的文件,如果该值表示打开其他用户路径下的文件,则返回无法打开的提示信息。

当云计算服务器接收到3个用户打开文件的命令后,其中,该命令的参数类型为引用类型参数,具体如图4所示,该方法还包括以下步骤:

1、云计算服务器将引用类型参数的地址压入寄存器中,将引用类型参数的值压入用户空间内存储。

其中,寄存器中存储的地址指向用户空间内存储的对应引用类型参数的值。

2、在云计算服务器进行系统调用时,将寄存器中的地址压入内核空间的栈中。

其中,在压入栈中的时候根据接收到的引用类型的先后顺序进行压入。

3、云计算服务器根据栈中的地址,通过copy_from_user函数将对应的值从用户空间拷贝到寄存器中,并将对应的值压入栈中。

4、对栈中的值进行过滤。

其中,如果某个值表示打开该用户自身路径下的文件,则打开对应的文件,如果该值表示打开其他用户路径下的文件,则返回无法打开的提示信息。

实施例四

本方案实施例提供了一种数据筛选装置,如图5所示,该装置可用于实现前述实施例一和实施例二的各方法流程,所述装置包括:

拷贝单元51,用于将用户空间内存储的第一数据拷贝到内核空间;

过滤单元52,用于对所述内核空间中存储的第二数据和所述第一数据进行过滤。

所述第一数据包括引用类型的数据;

所述第二数据包括值类型的数据。

所述拷贝单元51用于将用户空间内存储的第一数据拷贝到内核空间时,包括:

调用指定函数,将用户空间内存储的第一数据拷贝到内核空间。

所述数据筛选方法执行于内核内存。

在本方案实施例中,拷贝单元将用户空间内存储的第一数据拷贝到内核空间后,内核空间就得到用户空间内存储的数据,过滤单元从而可以对内核空间中存储的第二数据,以及用户空间内存储的第一数据进行过滤,进一步的,由于用户空间内存储了引用类型对应的值,在将用户空间内存储的第一数据拷贝到内核空间后,内核空间就可以得到引用类型对应值,因此在对内核空间中存储的第二数据和所述第一数据进行过滤时,实现了对引用类型参数的筛选。

实施例五

图6为服务器100的简化框图。该服务器100可以包括与一个或多个数据存储工具连接的处理器101,该数据存储工具可以包括存储介质102和内存单元103。服务器100还可以包括输入接口104和输出接口105,用于与另一装置或系统进行通信。被处理器101的cpu执行的程序代码可存储在内存单元103或存储介质102中。

服务器100中的处理器101调用存储在内存单元103或存储介质102的程序代码,以执行下面各步骤:

将用户空间内存储的第一数据拷贝到内核空间;

对所述内核空间中存储的第二数据和所述第一数据进行过滤。

在一个可选的实现方案中,所述第一数据包括引用类型的数据;所述第二数据包括值类型的数据。

在一个可选的实现方案中,所述处理器101还用于调用指定函数,将用户空间内存储的第一数据拷贝到内核空间。

在一个可选的实现方案中,所述数据筛选方法执行于内核内存。

上述实施例五中,存储介质可以是只读存储器(read-onlymemory,rom),或是可读写的,例如硬盘、闪存。内存单元可为随机存取存储器(randomaccessmemory,ram)。内存单元可与处理器物理集成或集成在存储器中或构建为单独的单元。

处理器为上述服务器的控制中心,并提供处理装置,用于执行指令,进行中断操作,提供计时功能以及多种其他功能。可选地,处理器包括一个或多个中央处理单元(cpu),例如图6中示出的cpu0和cpu1。上述设备中包括一个或者多个的处理器。处理器可为单核(单cpu)处理器或多核(多cpu)处理器。除非另有声明,描述为用于执行任务的例如处理器或存储器的部件可实现为通用部件,其暂时用于在给定时间执行任务,或实现为专门制造用于执行该任务的特定部件。此处所用的术语“处理器”指一个或多个装置,电路和/或处理核,用于处理数据,例如计算机程序指令。

被处理器的cpu执行的程序代码可存储在内存单元或存储介质中。可选地,存储在存储介质中的程序代码可以被复制入内存单元以便处理器的cpu执行。处理器可执行至少一个内核(例如linuxtm、unixtm、windowstm、androidtm、iostm),众所周知,该内核用于通过控制其他程序或过程的执行、控制与外围装置的通信以及控制计算机设备资源的使用来控制上述设备的操作。

上述设备中的上述元件可通过总线彼此连接,总线例如数据总线、地址总线、控制总线、扩展总线和局部总线之一或其任意组合。

实施例六

本方案实施例还提供了一种存储程序的非易失性计算机可读存储介质,该程序使数据筛选装置执行数据筛选方法,所述方法包括以下步骤:

将用户空间内存储的第一数据拷贝到内核空间;

对所述内核空间中存储的第二数据和所述第一数据进行过滤。

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

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

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

以上所述仅为本方案的较佳实施例而已,并不用以限制本方案,凡在本方案的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本方案保护的范围之内。

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