1.一种基于神经网络模型和哈希匹配的sql检测方法,其特征在于,包括:
将获取的sql语句转化为sql语句模板,通过预设特征提取模型提取带标记sql语句模板集合的特征向量,所述标记用于表征sql语句模板正常或异常,将特征向量输入到神经网络模型中对其进行训练,将训练好的神经网络模型作为sql检测模型,用于识别sql语句是否异常;
构建带标记sql语句模板集合的哈希表,所述哈希表中的键值对用于表征sql语句模板为正常或异常;
获取用户访问数据库所使用的sql语句,并转化成sql语句模板,在所述哈希表中查找sql语句模板对应的标记,若查找成功则输出对应的标记结果;若查找失败,通过所述预设特征提取模型获取用户使用sql语句模板的特征向量,并输入到sql检测模型中,当输出结果为正常时,则将该sql语句模板及对应的标记更新到哈希表中,并检测下一条sql语句。
2.根据权利要求1所述的基于神经网络模型和哈希匹配的sql检测方法,其特征在于,还包括:当在哈希表中查找的标记结果为异常,或当sql检测模型输出结果为异常时,则发送异常信息给管理人员进行告警。
3.根据权利要求1所述的基于神经网络模型和哈希匹配的sql检测方法,其特征在于,在提取带标记sql语句模板集合的特征向量的语句的步骤之前、构建带标记sql语句模板集合的哈希表的步骤之前、及获取用户访问数据库所使用的sql语句之后,在所述哈希表中查找sql语句对应的标记的步骤之前,均对sql语句进行正规化处理得到sql语句模板。
4.根据权利要求3所述的基于神经网络模型和哈希匹配的sql检测方法,其特征在于,所述正规化处理包括:将sql语句中的数值重写为0,变量除外;将sql语句中的单引号引起的参数重写为#,空字符串除外;将换行转换为空格;将连续的空格合并为1个;去掉运算符两端空格;去掉数字前的正、负号;去掉注释内容,为注释添加占位符,连续的多个注释视为一个;谓词格式化,按照各数据库的对象名命名原则,统一语句中的非参数的词的大小写;去掉语句开头、结尾的空格;在谓词和+/-号之间,如果没有空格或者注释,添加空格。
5.根据权利要求1基于神经网络模型和哈希匹配的sql检测方法,其特征在于,所述预设特征提取模型包括:词袋模型。
6.根据权利要求1基于神经网络模型和哈希匹配的sql检测方法,其特征在于,所述预设特征提取模型、哈希表和sql检测模型保存在外存上,在对用户访问数据库所使用的sql语句进行检测时,将所述预设特征提取模型、哈希表和sql检测模型保存到需要部署的服务器中。
7.一种基于神经网络模型和哈希匹配的sql检测系统,其特征在于,包括:
模型训练模块,用于将获取的sql语句转化为sql语句模板,通过预设特征提取模型提取带标记sql语句模板集合的特征向量,所述标记用于表征sql语句模板正常或异常,将特征向量输入到神经网络模型中对其进行训练,将训练好的神经网络模型作为sql检测模型,用于识别sql语句模板是否异常;
哈希表构建模块,用于构建带标记sql语句模板集合的哈希表,所述哈希表中的键值对用于表征sql语句模板为正常或异常;
用户sql语句检测模块,用于获取用户访问数据库所使用的sql语句,并转化成sql语句模板,在所述哈希表中查找sql语句模板对应的标记,若查找成功则输出对应的标记结果;若查找失败,通过所述预设特征提取模型获取用户使用sql语句模板的特征向量,并输入到sql检测模型中,当输出结果为正常时,则将该sql语句模板及对应的标记更新到哈希表中,并检测下一条sql语句。
8.一种计算机设备,其特征在于,包括:至少一个处理器,以及与所述至少一个处理器通信连接的存储器,其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器执行权利要求1-6中任一所述的基于神经网络模型和哈希匹配的sql检测方法。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使所述计算机执行1-6中任一所述的基于神经网络模型和哈希匹配的sql检测方法。