命令参数安全检测方法及装置与流程

专利检索2022-05-11  23



1.本发明涉及计算机技术领域,尤其涉及一种命令参数安全检测方法及装置。


背景技术:

2.命令作为一种用户和操作系统交互的方式,不仅可以用在最原始的终端交互界面,通过键盘手动输入命令的各个参数,对系统发出指令,也可以在目前广泛流传的图形用户界面上,通过点击配置不同参数下发给操作系统。而在实际使用中,不同命令因使用的功能和场景不同,参数的形态也不一样,随着命令的参数格式越来越复杂,数据的安全性就显得尤为重要。相关技术中,一些复杂的参数类型在没有经过严格的参数检测直接下发到底层业务模块,造成系统受到攻击而瘫痪或数据泄露,造成较为严重的经济损失。


技术实现要素:

3.本发明实施例提供一种命令参数安全检测方法及装置,用以解决现有技术中没有经过安全检测的参数直接下发到业务模块而造成装置瘫痪的问题。
4.根据本发明实施例的命令参数安全检测方法,包括:
5.接收终端下发的命令,并获取所述命令中携带的参数串;
6.将所述参数串拆分成多个参数,并对每个所述参数进行安全检测;
7.将通过安全检测的参数串发送给至少一个业务模块。
8.根据本发明的一些实施例,所述将所述参数串拆分成多个参数,包括:
9.根据预设的第一分割符,将所述参数串拆分成多个参数。
10.根据本发明的一些实施例,所述对每个所述参数进行安全检测,包括:
11.获取所述第一分割符对应的参数类型;
12.获取所述参数类型对应的正则表达式组;
13.基于所述正则表达式组对所述多个参数进行安全检测。
14.根据本发明的一些实施例,所述参数包括多个子参数,任意相邻两个所述子参数之间通过第二分割符隔开,所述第二分割符与所述第一分割符不同;
15.所述正则表达式组包括与多个所述子参数一一对应的多个正则表达式;
16.所述基于所述正则表达式组对所述多个参数进行安全检测,包括:
17.根据所述第二分割符,将所述参数分割为多个子参数;
18.针对每个子参数,利用其对应的正则表达式对其进行安全检测。
19.根据本发明的一些实施例,所述将所述参数串拆分成多个参数,并对每个所述参数进行安全检测,包括:
20.根据预设的、与所述参数串对应的type=[参数类型][第一分割符],将所述参数串拆分成多个参数,并对每个所述参数进行安全检测。
[0021]
根据本发明实施例的命令参数安全检测装置,包括:
[0022]
获取单元,用于接收终端下发的命令,并获取所述命令中携带的参数串;
[0023]
检测单元,用于将所述参数串拆分成多个参数,并对每个所述参数进行安全检测;
[0024]
分发单元,用于将通过安全检测的参数串发送给至少一个业务模块。
[0025]
根据本发明的一些实施例,所述检测单元,用于:
[0026]
根据预设的第一分割符,将所述参数串拆分成多个参数。
[0027]
根据本发明的一些实施例,所述检测单元,用于:
[0028]
获取所述第一分割符对应的参数类型;
[0029]
获取所述参数类型对应的正则表达式组;
[0030]
基于所述正则表达式组对所述多个参数进行安全检测。
[0031]
根据本发明的一些实施例,所述参数包括多个子参数,任意相邻两个所述子参数之间通过第二分割符隔开,所述第二分割符与所述第一分割符不同;
[0032]
所述正则表达式组包括与多个所述子参数一一对应的多个正则表达式;
[0033]
所述检测单元,用于:
[0034]
根据所述第二分割符,将所述参数分割为多个子参数;
[0035]
针对每个子参数,利用其对应的正则表达式对其进行安全检测。
[0036]
根据本发明的一些实施例,所述检测单元,用于:
[0037]
根据预设的、与所述参数串对应的type=[参数类型][第一分割符],将所述参数串拆分成多个参数,并对每个所述参数进行安全检测。
[0038]
采用本发明实施例,通过在将参数下发给业务模块之前,统一对参数进行安全检测,从而可以避免由于参数直接下发到业务模块而造成的系统瘫痪或数据泄露的问题。
[0039]
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
[0040]
通过阅读下文实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。在附图中:
[0041]
图1是本发明实施例中命令参数安全检测方法流程图;
[0042]
图2是本发明实施例中命令参数解析流程图;
[0043]
图3是本发明实施例中命令参数安全检测装置架构图。
具体实施方式
[0044]
下面将参照附图更详细地描述本发明的示例性实施例。虽然附图中显示了本发明的示例性实施例,然而应当理解,可以以各种形式实现本发明而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本发明,并且能够将本发明的范围完整的传达给本领域的技术人员。
[0045]
如图1所示,本发明第一方面实施例提出一种命令参数安全检测方法,包括:
[0046]
s1,接收终端下发的命令,并获取所述命令中携带的参数串;这里的命令可以是用户通过键盘手动输入的命令,也可以是用户通过点击图形用户界面上的操作键而生成的命
令,当然还可以是其他形式所生成的命令,这里不作具体限定。
[0047]
s2,将所述参数串拆分成多个参数,并对每个所述参数进行安全检测;
[0048]
参数串是由至少两个参数构建而成。通过预设规则可以对每个参数进行安全性检测,以保证每个参数都满足设置要求。
[0049]
s3,将通过安全检测的参数串发送给至少一个业务模块。
[0050]
采用本发明实施例,通过在将参数下发给业务模块之前,统一对参数进行安全检测,从而可以避免由于参数直接下发到业务模块而造成的系统瘫痪或数据泄露的问题。而且通过统一处理后再下发给各个功能模块,也可以提高效率,避免各个功能模块单独对参数进行安全检测造成的代码冗余的问题。
[0051]
在上述实施例的基础上,进一步提出各变型实施例,在此需要说明的是,为了使描述简要,在各变型实施例中仅描述与上述实施例的不同之处。
[0052]
根据本发明的一些实施例,参数可以包括ip、port、num、端口、dir路径信息中的至少一种。
[0053]
根据本发明的一些实施例,所述将所述参数串拆分成多个参数,包括:
[0054]
根据预设的第一分割符,将所述参数串拆分成多个参数。
[0055]
需要说明的是,第一分割符不存在于参数中。例如,第一分割符可以为逗号或斜杠。在实际应用过程中,用户可以自定义。
[0056]
参数串是由至少两个参数构建而成,且任意相邻两个参数之间通过第一分割符隔开。
[0057]
通过识别参数串中的第一分割符,就可以将一串参数串分割为多个参数。针对每个参数,可以根据预设规则对其进行安全检测。
[0058]
根据本发明的一些实施例,所述对每个所述参数进行安全检测,包括:
[0059]
获取所述第一分割符对应的参数类型;
[0060]
获取所述参数类型对应的正则表达式组;
[0061]
基于所述正则表达式组对所述多个参数进行安全检测。
[0062]
可以理解,针对每种参数类型,都制定了相应的正则表达式组,正则表达式组中包含有至少一条正则表达式。正则表达式用于规范一种参数类型的格式。
[0063]
根据本发明的一些实施例,所述参数包括多个子参数,任意相邻两个所述子参数之间通过第二分割符隔开,所述第二分割符与所述第一分割符不同;
[0064]
所述正则表达式组包括与多个所述子参数一一对应的多个正则表达式;
[0065]
所述基于所述正则表达式组对所述多个参数进行安全检测,包括:
[0066]
根据所述第二分割符,将所述参数分割为多个子参数;例如,子参数可以为ip、port、num、端口、dir路径信息、或其他。
[0067]
针对每个子参数,利用其对应的正则表达式对其进行安全检测。
[0068]
需要说明的是,第二分割符不存在子参数中。例如,第二分割符可以为冒号、分号或其他。在实际应用过程中,用户可以自定义。
[0069]
根据本发明的一些实施例,所述将所述参数串拆分成多个参数,并对每个所述参数进行安全检测,包括:
[0070]
根据预设的、与所述参数串对应的type=[参数类型][第一分割符],将所述参数
串拆分成多个参数,并对每个所述参数进行安全检测。
[0071]
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来。
[0072]
关于type=[参数类型][第一分割符]以及正则表达式组的设置可以通过软件中的配置文件实现。
[0073]
下面参照图2以一个具体的实施例详细描述根据本发明实施例的命令参数安全检测方法。值得理解的是,下述描述仅是示例性说明,而不是对本发明的具体限制。凡是采用本发明的相似结构及其相似变化,均应列入本发明的保护范围。
[0074]
为了保证业务系统的安全性,需要对复杂参数类型进行拆分,逐个校验,只有每项参数都通过严格的参数检测,才能够下发到业务模块去执行该命令。
[0075]
复杂参数类型,如包含了ip地址、端口、dir路径信息,使用的是一种通用的字符串string类型,系统在接收到该命令后,会按照string类型进行参数检测,满足要求后下发到底层业务模块执行。这种技术存在以下缺陷:不安全,跳过了系统级安全检测,直接下发到各个业务模块中使用,各模块需要单独实现参数的合法性检测,增加了代码冗余性;参数类型单一,可扩展性差。
[0076]
为了增强系统安全性,解决安全隐患,本发明实施例提出一种命令参数安全检测方法,命令参数安全检测方法在终端下发命令、各个业务模块执行命令中间执行。采用本发明实施例能够省去各模块都需要做参数检测的工作,有效减少了代码冗余性、分散性,由系统统一集中处理。
[0077]
本发明实施例的命令参数安全检测方法包括:
[0078]
(1)为复杂参数串制定数组表达格式,具体规则如下:
[0079]
数组类型格式为type=[][]。第一个[]里是参数串内各参数类型,第二个[]是多组参数之间的第一分割符;
[0080]
参数类型可以包括ip、port、num中的至少一种。参数中不能包含第一分割符,否则会导致拆分失败;如type=[ip][.]是不允许被定义的,因为ip的类型为点分十进制,就是使用.作为分隔的。所以分割符只能是ip类型不允许输入的才可以,如可以修改为[ip][,]。
[0081]
参数类型可以自定义,支持参数类型的扩展,不需要担心因不存在该种参数类型而无法使用的问题。可在配置文件中自定义所需的参数名和参数限制输入的正则表达式,如:
[0082][0083]
在实际的开发任务中,我们经常会使用“一组”数据来进行整体解析,如会话五元组,源ip,源端口、目的ip、目的端口,协议,其中每项数据都有自己特定的参数类型,组合起来又没有一种参数类型能够表示全部数据格式,这里就可以使用数组参数类型,下面举例说明如何正确的使用数组参数类型:
[0084]
若在命令行输入参数:ip1,ip2,ip3,ip4,ip5,则该参数的类型为:type=[ip][,];
[0085]
若在命令行输入参数:ip1:por1t,ip2:port2,ip3:port3,则该参数的类型为:type=[ip:port][,];
[0086]
若在命令行输入参数:ip1:port1/dir1,ip2:port2/dir2,ip3:port3/dir3,则该参数的类型为:type=[ip:port/dir][,],若当前系统没有dir目录类型,则可以新增参数类型,dir类型只能包含数字、英文字母、_、-等,不能包含其他特殊字符,防止与分割符冲突;
[0087]
若在命令行输入参数:'yyyy-mm-dd hh:mm:ss-yyyy-mm-dd hh:mm:ss',使用空格符作为两组数据之间的分割符,因为参数类型本身使用空格符来分隔年月日和时分秒,所以会导致无法正确的拆分参数,因此这种参数类型不支持,可使用”,”或其他没有出现在参数中的符号作为分割符,如定义类型为:type=[datetime][,]或type=[datetime][|]等。
[0088]
上面的参数均包括了一个或多个子参数,子参数之间通过第二分割符隔开。子参数不能有第二分割符和第一分割符。例如,子参数可以由数字和英文字母组成。
[0089]
由此,提供了灵活的方式来配置命令参数类型,不再局限于单一类型参数。可通过具体的业务需求,组合所需的一种或多种参数类型,很大程度上降低了功能设计的复杂度,由原本的多条命令可合并为一条命令实现。
[0090]
图2为命令参数解析流程图,系统启动时,先加载预先写好的自定义参数类型配置文件,包括数组表达式和正则表达式。当接收到连接终端发来的命令请求后,会逐一对命令行参数串输入内容进行检测,如果系统检测到有组合参数类型,则继续对该参数类型进行
拆解、逐一进行检测,直到所有参数都符合自定义参数规则后,系统才会调用各业务模块提供的功能接口,执行具体的业务操作。
[0091]
本发明旨在解决命令下发引起的系统安全性问题,通过正则表达式结合二维数组的形式,解决了绝大部分参数类型的表达方式,极大的增强了参数配置的灵活性,使得参数不再局限于某一种单一类型,简化了业务模块的处理逻辑。对每种参数类型做到可控化管理,在保证安全性的前提下,同时提供自定义组合参数类型,既丰富了参数的表达方式,又简化了模块的设计难度。将参数检测机制提前到系统级,保证底层业务模块的安全性。
[0092]
需要说明的是,以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
[0093]
如图3所示,本发明第二方面实施例提出一种命令参数安全检测装置1,包括:
[0094]
获取单元10,用于接收终端下发的命令,并获取所述命令中携带的参数串;这里的命令可以是用户通过键盘手动输入的命令,也可以是用户通过点击图形用户界面上的操作键而生成的命令,当然还可以是其他形式所生成的命令,这里不作具体限定。
[0095]
检测单元20,用于将所述参数串拆分成多个参数,并对每个所述参数进行安全检测;参数串是由至少两个参数构建而成。通过预设规则可以对每个参数进行安全性检测,以保证每个参数都满足设置要求。
[0096]
分发单元30,用于将通过安全检测的参数串发送给至少一个业务模块。
[0097]
采用本发明实施例,通过在将参数下发给业务模块之前,统一对参数进行安全检测,从而可以避免由于参数直接下发到业务模块而造成的系统瘫痪或数据泄露的问题。而且通过统一处理后再下发给各个功能模块,也可以提高效率,避免各个功能模块单独对参数进行安全检测造成的代码冗余的问题。
[0098]
在上述实施例的基础上,进一步提出各变型实施例,在此需要说明的是,为了使描述简要,在各变型实施例中仅描述与上述实施例的不同之处。
[0099]
根据本发明的一些实施例,参数可以包括ip、port、num、端口、dir路径信息中的至少一种。
[0100]
根据本发明的一些实施例,所述检测单元20,用于:
[0101]
根据预设的第一分割符,将所述参数串拆分成多个参数。
[0102]
参数串是由至少两个参数构建而成,且任意相邻两个参数之间通过第一分割符隔开。
[0103]
通过识别参数串中的第一分割符,就可以将一串参数串分割为多个参数。针对每个参数,可以根据预设规则对其进行安全检测。
[0104]
需要说明的是,第一分割符不存在于参数中。例如,第一分割符可以为逗号或斜杠。在实际应用过程中,用户可以自定义。
[0105]
根据本发明的一些实施例,所述检测单元20,用于:
[0106]
获取所述第一分割符对应的参数类型;
[0107]
获取所述参数类型对应的正则表达式组;
[0108]
基于所述正则表达式组对所述多个参数进行安全检测。
[0109]
可以理解,针对每种参数类型,都制定了相应的正则表达式组,正则表达式组中包
含有至少一条正则表达式。正则表达式用于规范一种参数类型的格式。
[0110]
根据本发明的一些实施例,所述参数包括多个子参数,任意相邻两个所述子参数之间通过第二分割符隔开,所述第二分割符与所述第一分割符不同;
[0111]
所述正则表达式组包括与多个所述子参数一一对应的多个正则表达式;
[0112]
所述检测单元20,用于:
[0113]
根据所述第二分割符,将所述参数分割为多个子参数;
[0114]
根据所述第二分割符,将所述参数分割为多个子参数;例如,子参数可以为ip、port、num、端口、dir路径信息、或其他。
[0115]
针对每个子参数,利用其对应的正则表达式对其进行安全检测。
[0116]
需要说明的是,第二分割符不存在子参数中。例如,第二分割符可以为冒号、分号或其他。在实际应用过程中,用户可以自定义。
[0117]
根据本发明的一些实施例,所述检测单元20,用于:
[0118]
根据预设的、与所述参数串对应的type=[参数类型][第一分割符],将所述参数串拆分成多个参数,并对每个所述参数进行安全检测。
[0119]
关于type=[参数类型][第一分割符]以及正则表达式组的设置可以通过配置文件实现。
[0120]
下面参照图3以一个具体的实施例详细描述根据本发明实施例的命令参数安全检测装置1。值得理解的是,下述描述仅是示例性说明,而不是对本发明的具体限制。凡是采用本发明的相似结构及其相似变化,均应列入本发明的保护范围。
[0121]
如图3所示,本发明实施例的命令参数安全检测装置1,包括:
[0122]
获取单元10,用于接收终端下发的命令,并获取所述命令中携带的参数串;这里的命令可以是用户通过键盘手动输入的命令,也可以是用户通过点击图形用户界面上的操作键而生成的命令,当然还可以是其他形式所生成的命令,这里不作具体限定。
[0123]
检测单元20,包括参数类型自定义单元和系统解析单元,所述参数类型自定义单元用于根据用户自身需求,修改命令行配置文件的参数类型,使用正则表达式结合二维数组的方式,组合现有的参数类型,也可以自定义新的参数类型;
[0124]
系统解析单元:用于在设备启动时,加载用户自定义的命令行规则文件和参数类型,在识别到有命令到来的时候,能够快速对命令的组合参数类型进行逐个拆分检测,若不符合参数规则,则直接报错无法继续执行,确保执行命令的安全性和完整性;
[0125]
系统解析单元具体用于:
[0126]
根据配置文件中设置的与所述参数串对应的type=[参数类型][第一分割符],识别参数串中的第一分割符,将所述参数串拆分成多个参数,获取所述参数类型对应的正则表达式组;基于所述正则表达式组对所述多个参数进行安全检测。
[0127]
如果参数包括多个子参数,先根据所述第二分割符,将所述参数分割为多个子参数;针对每个子参数,利用其对应的正则表达式对其进行安全检测。
[0128]
分发单元30,用于将通过安全检测的参数串发送给至少一个业务模块。
[0129]
业务模块在接收到终端发来的命令请求后,可以安全、放心的执行命令,使用各参数值进行业务逻辑处理,不需要担心有非法内容传入。
[0130]
本发明实施例提供灵活的方式来配置命令参数类型,不再局限于单一类型参数。
可通过具体的业务需求,组合所需的一种或多种参数类型,很大程度上降低了功能设计的复杂度,由原本的多条命令可合并为一条命令实现。将参数检测机制提前到系统级,保证底层业务模块的安全性。使用正则表达式结合二维数组来解决复杂参数类型的表示方式,通过定义数组类型,能够将不同的参数类型进行组合,提供灵活性的同时降低了设计复杂度。
[0131]
在终端和底层业务模块中间层,添加了安全检测模块,由系统对所有参数逐一进行严格检测,很好的保护了底层业务模块的安全性和稳定性。
[0132]
需要说明的是,以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
[0133]
本发明第三方面实施例提出一种命令参数安全检测设备,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如上所述的第一方面实施例所述的方法的步骤。
[0134]
本发明第四方面实施例提出一种计算机可读存储介质,所述计算机可读存储介质上存储有信息传输的实现程序,所述程序被处理器执行时实现如上所述的第一方面实施例所述的方法的步骤。
[0135]
本实施例所述计算机可读存储介质包括但不限于为:rom、ram、磁盘或光盘等。所述程序被处理器可以是手机,计算机,服务器,空调器,或者网络设备等。
[0136]
需要说明的是,在本说明书的描述中,使用用于表示元件的诸如“模块”、“部件”或“单元”的后缀仅为了有利于本发明的说明,其本身没有特定的意义。因此,“模块”、“部件”或“单元”可以混合地使用。
[0137]
参考术语“一个实施例”、“一些实施例”、“示意性实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。例如,在权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
[0138]
类似地,应当理解,为了精简本发明并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该发明的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面发明的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
[0139]
术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括该要素的过程、方法、物品
或者装置中还存在另外的相同要素。
[0140]
不应将位于括号之内的任何参考符号构造成对权利要求的限制。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
[0141]
在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
转载请注明原文地址:https://win.8miu.com/read-1057846.html

最新回复(0)