基于神经网络模型和哈希匹配的SQL检测方法及系统与流程

文档序号:25482433发布日期:2021-06-15 21:42阅读:128来源:国知局
基于神经网络模型和哈希匹配的SQL检测方法及系统与流程

本发明涉及异常检测技术领域,具体涉及一种基于神经网络模型和哈希匹配的sql检测方法及系统。



背景技术:

近年来,网络安全形势日益严峻,数据库安全是人们关注的一个重点问题。异常sql的执行会造成信息泄露、服务器崩溃等重大问题,为了保护服务器不受到异常sql的攻击,保证服务器的稳定运行,异常sql检测成为人们近来研究的热门问题。异常sql检测是指对于一条sql语句,检测其是否应该被当前数据库执行。

目前sql异常检测主要分为传统的检测方法和基于机器学习的检测方法。传统的检测方法主要是基于匹配的思想,将一条sql语句和已有的sql语句进行匹配或者将某些人工提取出的特征进行匹配来进行异常检测,然而这种方法在数据量少时可以达到不错的检测效果,但是当数据量较大时会造成巨大的时间开销。基于机器学习的检测方法在数据量较少时,机器学习模型无法很好的学习到异常sql语句的特征,将会导致大量的误报以及漏报,无法达到一个令人满意的准确率。传统的检测方法和基于机器学习的检测方法都无法同时在数据量大和小时保证高效以及准确。



技术实现要素:

因此,为了克服现有sql语句异常检测法无法同时保证在数据量大和小时保证高效以及准确的缺陷,本发明提供一种基于神经网络模型和哈希匹配的sql检测方法及系统,可以同时在大数据量和小数据量的情境中保证高效、准确的异常sql检测效果。

为达到上述目的,本发明提供如下技术方案:

第一方面,本发明实施例提供一种基于神经网络模型和哈希匹配的sql检测方法,包括:

将获取的sql语句转化为sql语句模板,通过预设特征提取模型提取带标记sql语句模板集合的特征向量,所述标记用于表征sql语句模板正常或异常,将特征向量输入到神经网络模型中对其进行训练,将训练好的神经网络模型作为sql检测模型,用于识别sql语句是否异常;

构建带标记sql语句模板集合的哈希表,所述哈希表中的键值对用于表征sql语句为正常或异常;

获取用户访问数据库所使用的sql语句,并转化成sql语句模板,在所述哈希表中查找sql语句模板对应的标记,若查找成功则输出对应的标记结果;若查找失败,通过所述预设特征提取模型获取用户使用sql语句模板的特征向量,并输入到sql检测模型中,当输出结果为正常时,则将该sql语句模板及对应的标记更新到哈希表中,并检测下一条sql语句。

优选地,当在哈希表中查找的标记结果为异常,或当sql检测模型输出结果为异常时,则发送异常信息给管理人员进行告警。

优选地,在提取带标记sql语句模板集合的特征向量的语句的步骤之前、构建带标记sql语句模板集合的哈希表的步骤之前、及获取用户访问数据库所使用的sql语句之后,在所述哈希表中查找sql语句对应的标记的步骤之前,均对sql语句进行正规化处理得到sql语句模板。

优选地,所述正规化处理包括:将sql语句中的数值重写为0,变量除外;将sql语句中的单引号引起的参数重写为#,空字符串除外;将换行转换为空格;将连续的空格合并为1个;去掉运算符两端空格;去掉数字前的正、负号;去掉注释内容,为注释添加占位符,连续的多个注释视为一个;谓词格式化,按照各数据库的对象名命名原则,统一语句中的非参数的词的大小写;去掉语句开头、结尾的空格;在谓词和+/-号之间,如果没有空格或者注释,添加空格。

优选地,所述预设特征提取模型包括:词袋模型。

优选地,所述预设特征提取模型、哈希表和sql检测模型保存在外存上,在对用户访问数据库所使用的sql语句进行检测时,将所述预设特征提取模型、哈希表和sql检测模型保存到需要部署的服务器中。

第二方面,本发明实施例提供一种基于神经网络模型和哈希匹配的sql检测系统,包括:模型训练模块,用于将获取的sql语句转化为sql语句模板,通过预设特征提取模型提取带标记sql语句模板集合的特征向量,所述标记用于表征sql语句正常或异常,将特征向量输入到神经网络模型中对其进行训练,将训练好的神经网络模型作为sql检测模型,用于识别sql语句是否异常;

哈希表构建模块,用于构建带标记sql语句模板集合的哈希表,所述哈希表中的键值对用于表征sql语句模板为正常或异常;

用户sql语句检测模块,用于获取用户访问数据库所使用的sql语句,并转化成sql语句模板,在所述哈希表中查找sql语句模板对应的标记,若查找成功则输出对应的标记结果;若查找失败,通过所述预设特征提取模型获取用户使用sql语句模板的特征向量,并输入到sql检测模型中,当输出结果为正常时,则将该sql语句模板及对应的标记更新到哈希表中,并检测下一条sql语句。

第三方面,本发明实施例提供一种计算机设备,包括:至少一个处理器,以及与至少一个处理器通信连接的存储器,其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器执行本发明实施例第一方面的基于神经网络模型和哈希匹配的sql检测方法。

第四方面,本发明实施例提供一种计算机可读存储介质,计算机可读存储介质存储有计算机指令,计算机指令用于使计算机执行本发明实施例第一方面的基于神经网络模型和哈希匹配的sql检测方法。

本发明技术方案,具有如下优点:

本发明提供的基于神经网络模型和哈希匹配的sql检测方法及系统,通过提取带标记sql语句模板集合的特征向量,将特征向量输入到神经网络模型中对其进行训练,训练好的神经网络模型识别sql语句是否异常;构建带标记sql语句模板集合的哈希表,哈希表中的键值对用于表征sql语句模板为正常或异常;获取用户访问数据库所使用的sql语句转化为sql语句模板,在哈希表中查找sql语句模板对应的标记,若查找成功则输出对应的标记结果;若查找失败,通过所述预设特征提取模型获取用户使用sql语句模板的特征向量并输入到神经网络模型中,当输出结果为正常时,则将该sql语句模板及对应的标记更新到哈希表中,并检测下一条sql语句,本发明将部分神经网络模型不容易判别或判别错误的sql语句模板通过哈希表进行查找匹配标记进行异常检测,未经哈希表记录的sql语句模板送入神经网络模型进行检测,并根据检测结果更新哈希表,可以同时在大数据量和小数据量的情境中保证高效、准确的异常sql检测效果。

附图说明

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

图1为本发明实施例中提供的基于神经网络模型和哈希匹配的sql检测方法的一个具体示例的流程图;

图2为本发明实施例中提供的训练模型的过程流程图;

图3为本发明实施例中提供的构建哈希表到的流程图;

图4为本发明实施例中提供的服务器部署的工作流程图;

图5为本发明实施例中提供的基于神经网络模型和哈希匹配的sql检测系统一示例的模块组成图;

图6为本发明实施例提供的计算机设备一个具体示例的组成图。

具体实施方式

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

此外,下面所描述的本发明不同实施方式中所涉及的技术特征只要彼此之间未构成冲突就可以相互结合。

实施例1

本发明实施例提供一种的基于神经网络模型和哈希匹配的sql检测方法,如图1所示,包括:

步骤s1:将获取的sql语句转化为sql语句模板,通过预设特征提取模型提取带标记sql语句模板集合的特征向量,所述标记用于表征sql模板语句正常或异常,将特征向量输入到神经网络模型中对其进行训练,将训练好的神经网络模型作为sql检测模型,用于识别sql语句是否异常。其中所述标记可以为0或1,可以用0表示正常,1表示异常,预设特征提取模型可以为词袋模型(bagofwords,bow),仅作为举例,不以此为限,也可以为其他特征提取模型,本发明实施例以词袋模型作为举例说明。

本发明实施例将sql语句转化为语句模板的过程例如:

sql语句:select`col1`,`col1`from`tab`where`col1`>='x'andemailisnulland5552=5552;

sql语句模板:select`col1`,`col1`from`tab`where`col1`>=‘#’andemailisnulland0=0。

本发明实施例将sql语句模板转化为特征向量的过程例如:

若有模板:

句子1:select`col2`from`tab`where`col2`=‘#’

句子2:deletefrom`tab`where`col3`=0

首先计算出现过的单词得到一个语料库(单词:编号):{select:0,`col2`:1,from:2,`tab`:3,where:4,=:5,’#:6,delete:7,`col3`:8,0:9},然后计算每个句子中不同单词出现过的次数得到特征向量为:

句子1的特征向量为:[1,2,1,1,1,1,1,0,0,0]

句子2的特征向量为:[0,0,1,1,1,1,0,1,1,1]。

在一具体实施例中,如图2所示,执行步骤s1训练模型的过程,包括以下步骤:

步骤100,输入带标记sql语句集合l;

步骤101,对l中语句进行正规化处理得到对应的sql语句模板集合lm;

步骤102,构建lm的词袋模型b;

步骤103,通过词袋模型b生成lm对应的特征向量集合lv;

步骤104,初始化一个神经网络模型m;

步骤105,使用特征向量集合lv训练模型m;

步骤106,将模型m保存到外存上(例如是保持在电脑磁盘上)。

步骤s2:构建带标记sql语句模板集合的哈希表,所述哈希表中的键值对用于表征sql语句模板为正常或异常。哈希表中的键值对中的键为sql语句,值为表征正常或异常的值,例如用0或1表征正常或异常,在一实施例中,构建的哈希表如下表所示:

在一具体实施例中,如图3所示,执行步骤s2包括以下步骤:

步骤200,输入带标记sql语句集合l;

步骤201,对l中语句进行正规化处理得到对应的sql语句模板集合lm;

步骤202,构建一个sql语句模板的哈希表t;

步骤203,将哈希表t保存在外存上。

需要说明的是,构建哈希表t时,可以使用不同的哈希方法来得到哈希函数和哈希编码,在此不作具体限制。

步骤s3:获取用户访问数据库所使用的sql语句,并转化成sql语句模板,在所述哈希表中查找sql语句模板对应的标记,若查找成功则输出对应的标记结果;若查找失败,通过所述预设特征提取模型获取用户使用sql语句模板的特征向量,并输入到sql检测模型中,当输出结果为正常时,则将该sql语句模板及对应的标记更新到哈希表中,并检测下一条sql语句。

在一具体实施例中,如图4所示,执行步骤s3训练模型的过程,包括以下步骤:

步骤300,将步骤103生成的词袋模型b,步骤106训练好的神经网络模型m,步骤204生成的哈希表t,保存到需要部署的服务器的中;

步骤301,在服务器上加载模型m、词袋模型b以及哈希表t到内存中;具体的,将之前两个流程保存在外存上的神经网络模型、词袋模型及哈希表拷贝到需要部署的服务器上,并加载到内存中,用于每当有一条新的sql语句访问时,需要对其进行异常检测。

步骤302,获取用户访问数据库所使用的查询语句u;

步骤303,将u进行正规化处理后得到相应的sql语句模板um;

步骤304,在哈希表t中查找um对应的标记,若查找成功则输出结果并返回步骤302,否则执行步骤305;

步骤305,通过词袋模型生成um对应的特征向量uv;

步骤306,通过模型m计算uv的标记r;

步骤307,若r为正常则将该sql语句模板的字符串哈希值及对应的标记更新到哈希表中然后输出结果然后并返回步骤302,否则通知管理员进行相应处理。

本发明实施例提的方法,当在哈希表中查找的的标记结果为异常,或当sql检测模型输出结果为异常时,则发送异常信息给管理人员进行告警,方便管理人员及时进行维护处理。

需要说明的是,本发明实施例正规化处理包括:将sql语句中的数值重写为0,变量除外;将sql语句中的单引号引起的参数重写为#,空字符串除外;将换行转换为空格;将连续的空格(包括换行转换而成的)合并为1个;去掉运算符两端空格;去掉数字前的正、负号;去掉注释内容,为注释添加占位符,连续的多个注释视为一个;谓词格式化,按照各数据库的对象名命名原则,统一语句中的非参数的词的大小写;去掉语句开头、结尾的空格(包括转换而来的空格);在谓词和+/-号之间,如果没有空格或者注释,添加空格。

本发明实施例提供的基于神经网络模型和哈希匹配的sql检测方法,将部分神经网络模型不容易判别或判别错误的sql语句模板通过哈希表进行查找匹配标记进行异常检测,未经哈希表记录的sql语句模板送入神经网络模型进行检测,并根据检测结果更新哈希表,可以同时在大数据量和小数据量的情境中保证高效、准确的异常sql检测效果。

实施例2

本发明实施例提供一种基于神经网络模型和哈希匹配的sql检测系统,如图5所示,包括:

模型训练模块1,用于将获取的sql语句转化为sql语句模板,通过预设特征提取模型提取带标记sql语句模板集合的特征向量,所述标记用于表征sql模板语句正常或异常,将特征向量输入到神经网络模型中对其进行训练,将训练好的神经网络模型作为sql检测模型,用于识别sql语句是否异常;此模块执行实施例1中的步骤s1所描述的方法,在此不再赘述。

哈希表构建模块2,用于构建带标记sql语句模板集合的哈希表,所述哈希表中的键值对用于表征sql语句模板为正常或异常;模块执行实施例1中的步骤s2所描述的方法,在此不再赘述。

用户sql语句检测模块3,用于获取用户访问数据库所使用的sql语句,并转化成sql语句模板,在所述哈希表中查找sql语句模板对应的标记,若查找成功则输出对应的标记结果;若查找失败,通过所述预设特征提取模型获取用户使用sql语句模板的特征向量,并输入到sql检测模型中,当输出结果为正常时,则将该sql语句模板及对应的标记更新到哈希表中,并检测下一条sql语句;该模块执行实施例1中的步骤s3所描述的方法,在此不再赘述。

本发明实施例提供的基于神经网络模型和哈希匹配的sql检测系统,将部分神经网络模型不容易判别或判别错误的sql语句模板通过哈希表进行查找匹配标记进行异常检测,未经哈希表记录的sql语句模板送入神经网络模型进行检测,并根据检测结果更新哈希表,可以同时在大数据量和小数据量的情境中保证高效、准确的异常sql检测效果。

实施例3

本发明实施例提供一种计算机设备,如图6所示,包括:至少一个处理器401,例如cpu(centralprocessingunit,中央处理器),至少一个通信接口403,存储器404,至少一个通信总线402。其中,通信总线402用于实现这些组件之间的连接通信。其中,通信接口403可以包括显示屏(display)、键盘(keyboard),可选通信接口403还可以包括标准的有线接口、无线接口。存储器404可以是高速ram存储器(ramdomaccessmemory,易挥发性随机存取存储器),也可以是非不稳定的存储器(non-volatilememory),例如至少一个磁盘存储器。存储器404可选的还可以是至少一个位于远离前述处理器401的存储装置。其中处理器401可以执行实施例1的基于神经网络模型和哈希匹配的sql检测方法。存储器404中存储一组程序代码,且处理器401调用存储器404中存储的程序代码,以用于执行实施例1的基于神经网络模型和哈希匹配的sql检测方法。

其中,通信总线402可以是外设部件互连标准(peripheralcomponentinterconnect,简称pci)总线或扩展工业标准结构(extendedindustrystandardarchitecture,简称eisa)总线等。通信总线402可以分为地址总线、数据总线、控制总线等。为便于表示,图6中仅用一条线表示,但并不表示仅有一根总线或一种类型的总线。其中,存储器404可以包括易失性存储器(英文:volatilememory),例如随机存取存储器(英文:random-accessmemory,缩写:ram);存储器也可以包括非易失性存储器(英文:non-volatilememory),例如快闪存储器(英文:flashmemory),硬盘(英文:harddiskdrive,缩写:hdd)或固降硬盘(英文:solid-statedrive,缩写:ssd);存储器404还可以包括上述种类的存储器的组合。

其中,处理器401可以是中央处理器(英文:centralprocessingunit,缩写:cpu),网络处理器(英文:networkprocessor,缩写:np)或者cpu和np的组合。处理器401还可以进一步包括硬件芯片。上述硬件芯片可以是专用集成电路(英文:application-specificintegratedcircuit,缩写:asic),可编程逻辑器件(英文:programmablelogicdevice,缩写:pld)或其组合。上述pld可以是复杂可编程逻辑器件(英文:complexprogrammablelogicdevice,缩写:cpld),现场可编程逻辑门阵列(英文:field-programmablegatearray,缩写:fpga),通用阵列逻辑(英文:genericarraylogic,缩写:gal)或其任意组合。

可选地,存储器404还用于存储程序指令。处理器401可以调用程序指令,实现如本申请执行实施例1中的基于神经网络模型和哈希匹配的sql检测方法。

本发明实施例还提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机可执行指令,该计算机可执行指令可执行实施例1的基于神经网络模型和哈希匹配的sql检测方法。其中,所述存储介质可为磁碟、光盘、只读存储记忆体(read-onlymemory,rom)、随机存储记忆体(randomaccessmemory,ram)、快闪存储器(flashmemory)、硬盘(harddiskdrive,缩写:hdd)或固降硬盘(solid-statedrive,ssd)等;所述存储介质还可以包括上述种类的存储器的组合。

显然,上述实施例仅仅是为清楚地说明所作的举例,而并非对实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。而由此所引申出的显而易见的变化或变动仍处于本发明创造的保护范围之中。

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