CN111984970B - 一种sql注入检测方法、系统及电子设备和存储介质 - Google Patents

一种sql注入检测方法、系统及电子设备和存储介质 Download PDF

Info

Publication number
CN111984970B
CN111984970B CN201910430596.1A CN201910430596A CN111984970B CN 111984970 B CN111984970 B CN 111984970B CN 201910430596 A CN201910430596 A CN 201910430596A CN 111984970 B CN111984970 B CN 111984970B
Authority
CN
China
Prior art keywords
grammar
sql injection
data set
injection detection
fingerprints
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201910430596.1A
Other languages
English (en)
Other versions
CN111984970A (zh
Inventor
章明星
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sangfor Technologies Co Ltd
Original Assignee
Sangfor Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sangfor Technologies Co Ltd filed Critical Sangfor Technologies Co Ltd
Priority to CN201910430596.1A priority Critical patent/CN111984970B/zh
Publication of CN111984970A publication Critical patent/CN111984970A/zh
Application granted granted Critical
Publication of CN111984970B publication Critical patent/CN111984970B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/554Detecting local intrusion or implementing counter-measures involving event detection and direct action
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/577Assessing vulnerabilities and evaluating computer system security
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/034Test or assess a computer or a system

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请公开了一种SQL注入检测方法、系统及一种电子设备和计算机可读存储介质,该方法包括:获取包含SQL注入的流量数据和正常流量数据,并将所有所述包含SQL注入的流量数据组成黑数据集,将所有所述正常流量数据组成白数据集;将所述黑数据集和所述白数据集中的每条流量数据转换为token序列,并抽取所述token序列的N元组作为语法指纹;其中,N为正整数;提取在所述黑数据集中出现概率大于第一预设值且在所述白数据集中出现概率小于第二预设值的语法指纹作为语法指纹库,以便利用所述语法指纹库进行SQL注入检测。由此可见,本申请提供的SQL注入检测方法,在不依赖于人工提取规则的前提下,降低SQL注入检测的漏报率。

Description

一种SQL注入检测方法、系统及电子设备和存储介质
技术领域
本申请涉及计算机技术领域,更具体地说,涉及一种SQL注入检测方法、系统及一种电子设备和一种计算机可读存储介质。
背景技术
SQL注入(英文全称:SQL injection),是发生于应用程序数据库层的安全漏洞。简而言之,是在输入的字符串之中注入SQL指令,在设计不良的程序当中忽略了检查,那么这些指令就会被数据库服务器误认为是正常的SQL指令而运行,使得服务器遭到破坏或是入侵。
在现有技术的一种方案中,采用基于正则规则的SQL注入检测方法,当前主流的防火墙均使用该方法。然而,由于SQL语句文法的复杂程度和正则表达式的表达能力有限,基于正则规则的方法的漏报率和误报率较高。
在现有技术的另一种方案中,采用基于文法规则的SQL注入检测方法。然而,文法规则需要依赖人工提取,虽然上下文无关语言本身的表达能力强于正则表达式,但是依赖人工进行规则的提取,因此存在更新慢、响应慢、出错率高等多项问题。
因此,如何在不依赖于人工提取规则的前提下,降低SQL注入检测的漏报率和误报率是本领域技术人员需要解决的技术问题。
发明内容
本申请的目的在于提供一种SQL注入检测方法、系统及一种电子设备和一种计算机可读存储介质,在不依赖于人工提取规则的前提下,降低SQL注入检测的漏报率和误报率。
为实现上述目的,本申请提供了一种SQL注入检测方法,包括:
获取包含SQL注入的流量数据和正常流量数据,并将所有所述包含SQL注入的流量数据组成黑数据集,将所有所述正常流量数据组成白数据集;
将所述黑数据集和所述白数据集中的每条流量数据转换为token序列,并抽取所述token序列的N元组作为语法指纹;其中,N为正整数;
提取在所述黑数据集中出现概率大于第一预设值且在所述白数据集中出现概率小于第二预设值的语法指纹作为语法指纹库,以便利用所述语法指纹库进行SQL注入检测。
其中,抽取所述token序列的N元组作为语法指纹,包括:
对所述token序列进行折叠,并抽取折叠后的token序列的N元组作为所述语法指纹。
其中,对所述token序列进行折叠,包括:
将所述流量数据中语义上等价的关键字在所述token序列中对应的token关键字进行折叠。
其中,对所述token序列进行折叠之前,还包括:
将所述流量数据中的目标关键字转换为所述token序列中的目标token;其中,所述目标关键字包括注释、数学表达式和引用字符串中的任一项或任几项的组合。
其中,所述抽取折叠后的token序列的N元组作为所述语法指纹,包括:
抽取折叠后的token序列的N元组作为候选语法指纹,并抽取所述候选语法指纹中包含关键token的语法指纹作为所述语法指纹。
其中,利用所述语法指纹库进行SQL注入检测,包括:
获取用户流量,并对所述用户流量进行解码操作;
当解码后的流量命中所述语法指纹库时,判定所述用户流量为SQL注入攻击。
其中,利用所述语法指纹库进行SQL注入检测,包括:
利用基于正则规则的引擎和所述语法指纹库进行SQL注入检测。
其中,所述基于正则规则的引擎包括Snort引擎。
其中,所述利用基于正则规则的引擎和所述语法指纹库进行SQL注入检测,包括:
获取用户流量,并对所述用户流量进行解码操作;
当解码后的流量命中所述基于正则规则的引擎和所述语法指纹库时,判定所述用户流量为SQL注入攻击。
其中,所述当解码后的流量命中所述基于正则规则的引擎和所述语法指纹库时,判定所述用户流量为SQL注入攻击,包括:
判断所述解码后的流量是否命中所述基于正则规则的引擎;
若没有命中所述基于正则规则的引擎,则判断所述解码后的流量是否命中所述语法指纹库;
若命中所述语法指纹库,则判定所述用户流量为SQL注入攻击。
为实现上述目的,本申请提供了一种SQL注入检测系统,包括:
获取模块,用于获取包含SQL注入的流量数据和正常流量数据,并将所有所述包含SQL注入的流量数据组成黑数据集,将所有所述正常流量数据组成白数据集;
转换模块,用于将所述黑数据集和所述白数据集中的每条流量数据转换为token序列,并抽取所述token序列的N元组作为语法指纹;其中,N为正整数;
提取模块,用于提取在所述黑数据集中出现概率大于第一预设值且在所述白数据集中出现概率小于第二预设值的语法指纹作为语法指纹库,以便利用所述语法指纹库进行SQL注入检测。
其中,所述转换模块包括:
第一转换单元,用于将所述黑数据集和所述白数据集中的每条流量数据转换为token序列;
折叠单元,用于对所述token序列进行折叠;
抽取单元,用于抽取折叠后的token序列的N元组作为语法指纹的模块。
其中,所述折叠单元具体为将所述流量数据中语义上等价的关键字在所述token序列中对应的token关键字进行折叠的单元。
其中,还包括:
第二转换单元,用于将所述流量数据中的目标关键字转换为所述token序列中的目标token;其中,所述目标关键字包括注释、数学表达式和引用字符串中的任一项或任几项的组合。
其中,所述抽取单元具体为抽取折叠后的token序列的N元组作为候选语法指纹,并抽取所述候选语法指纹中包含关键token的语法指纹作为所述语法指纹的单元。
其中,所述提取模块包括:
提取单元,用于提取在所述黑数据集中出现概率大于第一预设值且在所述白数据集中出现概率小于第二预设值的语法指纹作为语法指纹库,以便利用所述语法指纹库进行SQL注入检测。
第一获取单元,用于获取用户流量,并对所述用户流量进行解码操作;
第一判定单元,用于当解码后的流量命中所述语法指纹库时,判定所述用户流量为SQL注入攻击。
其中,所述提取模块具体为提取在所述黑数据集中出现概率大于第一预设值且在所述白数据集中出现概率小于第二预设值的语法指纹作为语法指纹库,以便利用基于正则规则的引擎和所述语法指纹库进行SQL注入检测的模块。
其中,所述提取模块包括:
提取单元,用于提取在所述黑数据集中出现概率大于第一预设值且在所述白数据集中出现概率小于第二预设值的语法指纹作为语法指纹库,以便利用所述语法指纹库进行SQL注入检测。
第二获取单元,用于获取用户流量,并对所述用户流量进行解码操作;
第二判定单元,用于当解码后的流量命中所述基于正则规则的引擎和所述语法指纹库时,判定所述用户流量为SQL注入攻击。
其中,所述第二判定单元包括:
第一判断子单元,用于判断所述解码后的流量是否命中所述基于正则规则的引擎;若否,则启动第二判断子单元的工作流程;
所述第二判断子单元,用于判断所述解码后的流量是否命中所述语法指纹库;若是,则启动判定子单元的工作流程;
所述判定子单元,用于判定所述用户流量为SQL注入攻击。
为实现上述目的,本申请提供了一种电子设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如上述SQL注入检测方法的步骤。
为实现上述目的,本申请提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述SQL注入检测方法的步骤。
通过以上方案可知,本申请提供的一种SQL注入检测方法,包括:获取包含SQL注入的流量数据和正常流量数据,并将所有所述包含SQL注入的流量数据组成黑数据集,将所有所述正常流量数据组成白数据集;将所述黑数据集和所述白数据集中的每条流量数据转换为token序列,并抽取所述token序列的N元组作为语法指纹;其中,N为正整数;提取在所述黑数据集中出现概率大于第一预设值且在所述白数据集中出现概率小于第二预设值的语法指纹作为语法指纹库,以便利用所述语法指纹库进行SQL注入检测。
本申请提供的SQL注入检测方法,提取在黑数据集中出现概率较高且在白数据集中出现概率较低的语法指纹作为用于SQL注入检测的文法规则即语法指纹库,整个提取过程不涉及人工,可以完全自动化。由于该语法指纹库是通过分析包含SQL注入的流量数据和正常流量数据得到的,因此能够适应于复杂的SQL语句文法,相对于基于正则规则的SQL注入检测方法,降低了SQL注入检测的漏报率和误报率。由此可见,本申请提供的SQL注入检测方法,在不依赖于人工提取规则的前提下,降低SQL注入检测的漏报率。本申请还公开了一种SQL注入检测系统及一种电子设备和一种计算机可读存储介质,同样能实现上述技术效果。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性的,并不能限制本申请。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。附图是用来提供对本公开的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本公开,但并不构成对本公开的限制。在附图中:
图1为根据一示例性实施例示出的一种SQL注入检测方法的流程图;
图2为根据一示例性实施例示出的另一种SQL注入检测方法的流程图;
图3为根据一示例性实施例示出的又一种SQL注入检测方法的流程图;
图4为根据一示例性实施例示出的一种SQL注入检测系统的结构图;
图5为根据一示例性实施例示出的一种电子设备的结构图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
在现有技术中,基于正则规则的SQL注入检测方法,由于正则表达式的表达能力有限导致漏报率和误报率较高,基于文法规则的SQL注入检测方法依赖人工提取,更新慢、响应慢、出错率高。因此,在本申请中,通过分析包含SQL注入的流量数据和正常流量数据得到语法指纹库,能够适应于复杂的SQL语句文法,且整个提取过程不涉及人工,可以完全自动化。在不依赖于人工提取规则的前提下,降低SQL注入检测的漏报率和误报率。
本申请实施例公开了一种SQL注入检测方法,在不依赖于人工提取规则的前提下,降低SQL注入检测的漏报率和误报率。
参见图1,根据一示例性实施例示出的一种SQL注入检测方法的流程图,如图1所示,包括:
S101:获取包含SQL注入的流量数据和正常流量数据,并将所有所述包含SQL注入的流量数据组成黑数据集,将所有所述正常流量数据组成白数据集;
本实施例的执行主体可以为用于SQL注入检测设备的处理器,在进行SQL注入检测时,首先确定黑数据集和白数据集,黑数据集为包含SQL注入的流量数据,白数据集为正常流量数据。
S102:将所述黑数据集和所述白数据集中的每条流量数据转换为token序列,并抽取所述token序列的N元组作为语法指纹;其中,N为正整数;
在本步骤中,基于语法分析将两个数据集中的每条流量数据转换为token序列。例如,对于语句“Select A from B/**/Union/**/Select C from D”来说,“Select”对应“Select Keyword”,“A”、“B”、“C”和“D”对应“Label”,“from”对应“Keyword”,“/**/”对应“Comment”,“Union”对应“Union Keyword”,取首字母作为token关键字,形成的token序列为“SLKLCUCSLKL”。
将流量数据转换为token序列,抽取该token序列的N元组作为语法指纹,即一个语法指纹包括N个token关键字,本实施例不对N的具体值进行限定,本领域技术人员可以根据实际情况灵活设置。例如,当N为4时,对于上述token序列抽取得到的语法指纹为:SLKL、LKLC、KLCU、LCUC、CUCS、UCSL、CSLK和SLKL。
S103:提取在所述黑数据集中出现概率大于第一预设值且在所述白数据集中出现概率小于第二预设值的语法指纹作为语法指纹库,以便利用所述语法指纹库进行SQL注入检测。
在本步骤中,提取黑数据集中出现概率大于第一预设值且在白数据集中出现概率小于第二预设值的语法指纹作为语法指纹库。在具体实施中,可以根据每个语法指纹在其所在的数据集中的出现概率为其评分,出现概率越高评分越高。在黑数据集中,该评分代表该语法指纹的威胁程度,按照评分由高到底进行排序。在白数据集中,按照评分由低至高进行排序,提取在黑数据集和白数据集中均在前M位的语法指纹作为语法指纹库。
当用户流量的语法指纹命中语法指纹库时,该用户流量为SQL注入攻击。作为一种优选实施方式,利用所述语法指纹库进行SQL注入检测,包括:获取用户流量,并对所述用户流量进行解码操作;当解码后的流量命中所述语法指纹库时,判定所述用户流量为SQL注入攻击。
在具体实施中,对于一个待检测的用户流量,首先将该用户流量解码为明文流量,解码方式包括通用解码和专用解码,通用解码为将base64或者urlencod等编码格式统一的转换成解码后的字符,专用解码例如特定unicode字符被MySQL解释为关键词。得到解码后的流量后,利用如步骤S102介绍的语法指纹的提取方法提取解码后的流量的语法指纹,当语法指纹库中存在该语法指纹时,判定该用户流量为SQL注入攻击。
优选的,本步骤中生成的语法指纹库可以与基于正则规则的引擎结合,共同用于SQL注入检测,可以同时做到较低的误报率和漏报率。即利用所述语法指纹库进行SQL注入检测的步骤包括:利用基于正则规则的引擎和所述语法指纹库进行SQL注入检测。此处的基于正则规则的引擎包括但不限于Snort引擎,在此不进行具体限定。同样的,对于一个待检测的用户流量需要对其进行解码操作,即利用基于正则规则的引擎和所述语法指纹库进行SQL注入检测的包括:获取用户流量,并对所述用户流量进行解码操作;当解码后的流量命中所述基于正则规则的引擎和所述语法指纹库时,判定所述用户流量为SQL注入攻击。
需要说明的是,由于对流量数据的分析并生成语法指纹库的过程可能会导致性能下降,因此可以将判断解码后的流量是否命中语法指纹库的步骤放置于基于正则规则的引擎之后,用于修正该引擎给出的结果。即上述当解码后的流量命中所述基于正则规则的引擎和所述语法指纹库时,判定所述用户流量为SQL注入攻击,包括:判断所述解码后的流量是否命中所述基于正则规则的引擎;若没有命中所述基于正则规则的引擎,则判断所述解码后的流量是否命中所述语法指纹库;若命中所述语法指纹库,则判定所述用户流量为SQL注入攻击。
可以理解的是,当出现漏报和误报的流量,只需将其添加至对应的黑数据集或白数据集中再运行一次语法指纹库的提取程序即可。即对于漏报的流量将其加入黑名单中,对于误报的流量将其加入白名单中,可以进一步降低SQL注入检测的漏报率和误报率。
本申请实施例提供的SQL注入检测方法,提取在黑数据集中出现概率较高且在白数据集中出现概率较低的语法指纹作为用于SQL注入检测的文法规则即语法指纹库,整个提取过程不涉及人工,可以完全自动化。由于该语法指纹库是通过分析包含SQL注入的流量数据和正常流量数据得到的,因此能够适应于复杂的SQL语句文法,相对于基于正则规则的SQL注入检测方法,降低了SQL注入检测的漏报率和误报率。由此可见,本申请实施例提供的SQL注入检测方法,在不依赖于人工提取规则的前提下,降低SQL注入检测的漏报率。
本申请实施例公开了一种SQL注入检测方法,相对于上一实施例,本实施例对技术方案作了进一步的说明和优化。具体的:
参见图2,根据一示例性实施例示出的另一种SQL注入检测方法的流程图,如图2所示,包括:
S201:获取包含SQL注入的流量数据和正常流量数据,并将所有所述包含SQL注入的流量数据组成黑数据集,将所有所述正常流量数据组成白数据集;
S202:将所述黑数据集和所述白数据集中的每条流量数据转换为token序列,对所述token序列进行折叠,并抽取折叠后的token序列的N元组作为所述语法指纹。
在本步骤中,将流量数据转换为token序列,并对其进行折叠,可以缩短token序列的长度,进而减少语法指纹的数量。优选的,对所述token序列进行折叠可以包括:将所述流量数据中语义上等价的关键字在所述token序列中对应的token关键字进行折叠。例如,将三个连续的Label变量Label、Label、Label合并成Label,即当一个token序列为“SLLLKL”时,将其折叠为“SLKL”。又如,将“Select All”的token关键字设置为“Select”对应的token关键字“S”。
在本实施例中,除了简单地提取所有连续串还可以考虑包括注释,字符串等在内的跳跃的情况。即作为一种优选实施方式,对所述token序列进行折叠之前,还包括:将所述流量数据中的目标关键字转换为所述token序列中的目标token;其中,所述目标关键字包括注释、数学表达式和引用字符串中的任一项或任几项的组合。
在具体实施中,对于注释(即“/**/”)可以直接将其删除,即对于语句“Select Afrom B/**/Union/**/Select C from D”来说,形成的token序列为“SLKLUSLKL”。对于数学表达式和引用字符串(即带有“”的字符串),在语法指纹提取时,不关注具体的数学表达式,不关注引用的具体字符串,因此可以将其token关键字设置为统一的目标token。
需要说明的是,为了进一步减少语法指纹的数量,可以对上述提取的语法指纹进行筛选,将包含关键token的语法指纹组成语法指纹库,即抽取折叠后的token序列的N元组作为所述语法指纹的步骤包括:抽取折叠后的token序列的N元组作为候选语法指纹,并抽取所述候选语法指纹中包含关键token的语法指纹作为所述语法指纹。此处的关键token本领域技术人员可以进行灵活设置,例如,可以设置关键token为“S”,对于候选语法指纹:SLKL、LKLC、KLCU、LCUC、CUCS、UCSL、CSLK和SLKL,筛选后得到的语法指纹为:SLKL、CUCS、UCSL、CSLK和SLKL。
S203:提取在所述黑数据集中出现概率大于第一预设值且在所述白数据集中出现概率小于第二预设值的语法指纹作为语法指纹库,以便利用所述语法指纹库进行SQL注入检测。
可见,由于在本实施例中对token序列进行了折叠,缩短了token序列的长度,减少了语法指纹的数量,提高了语法指纹库的提取效率,进而提高了SQL注入检测效率。
本申请实施例公开了一种SQL注入检测方法,相对于上一实施例,本实施例对技术方案作了进一步的说明和优化。具体的:
参见图3,根据一示例性实施例示出的又一种SQL注入检测方法的流程图,如图3所示,包括:
S301:获取包含SQL注入的流量数据和正常流量数据,并将所有所述包含SQL注入的流量数据组成黑数据集,将所有所述正常流量数据组成白数据集;
S302:将所述黑数据集和所述白数据集中的每条流量数据转换为token序列;
S303:将所述流量数据中的目标关键字转换为所述token序列中的目标token;其中,所述目标关键字包括注释、数学表达式和引用字符串中的任一项或任几项的组合;
S304:将所述流量数据中语义上等价的关键字在所述token序列中对应的token关键字进行折叠;
S305:抽取折叠后的token序列的N元组作为候选语法指纹,并抽取所述候选语法指纹中包含关键token的语法指纹作为所述语法指纹。
S306:提取在所述黑数据集中出现概率大于第一预设值且在所述白数据集中出现概率小于第二预设值的语法指纹作为语法指纹库,以便利用所述语法指纹库进行SQL注入检测。
下面对本申请实施例提供的一种SQL注入检测系统进行介绍,下文描述的一种SQL注入检测系统与上文描述的一种SQL注入检测方法可以相互参照。
参见图4,根据一示例性实施例示出的一种SQL注入检测系统的结构图,如图4所示,包括:
获取模块401,用于获取包含SQL注入的流量数据和正常流量数据,并将所有所述包含SQL注入的流量数据组成黑数据集,将所有所述正常流量数据组成白数据集;
转换模块402,用于将所述黑数据集和所述白数据集中的每条流量数据转换为token序列,并抽取所述token序列的N元组作为语法指纹;其中,N为正整数;
提取模块403,用于提取在所述黑数据集中出现概率大于第一预设值且在所述白数据集中出现概率小于第二预设值的语法指纹作为语法指纹库,以便利用所述语法指纹库进行SQL注入检测。
本申请实施例提供的SQL注入检测系统,提取在黑数据集中出现概率较高且在白数据集中出现概率较低的语法指纹作为用于SQL注入检测的文法规则即语法指纹库,整个提取过程不涉及人工,可以完全自动化。由于该语法指纹库是通过分析包含SQL注入的流量数据和正常流量数据得到的,因此能够适应于复杂的SQL语句文法,相对于基于正则规则的SQL注入检测方法,降低了SQL注入检测的漏报率和误报率。由此可见,本申请实施例提供的SQL注入检测系统,在不依赖于人工提取规则的前提下,降低SQL注入检测的漏报率。
在上述实施例的基础上,作为一种优选实施方式,所述转换模块402包括:
第一转换单元,用于将所述黑数据集和所述白数据集中的每条流量数据转换为token序列;
折叠单元,用于对所述token序列进行折叠;
抽取单元,用于抽取折叠后的token序列的N元组作为语法指纹的模块。
在上述实施例的基础上,作为一种优选实施方式,所述折叠单元具体为将所述流量数据中语义上等价的关键字在所述token序列中对应的token关键字进行折叠的单元。
在上述实施例的基础上,作为一种优选实施方式,还包括:
第二转换单元,用于将所述流量数据中的目标关键字转换为所述token序列中的目标token;其中,所述目标关键字包括注释、数学表达式和引用字符串中的任一项或任几项的组合。
在上述实施例的基础上,作为一种优选实施方式,所述抽取单元具体为抽取折叠后的token序列的N元组作为候选语法指纹,并抽取所述候选语法指纹中包含关键token的语法指纹作为所述语法指纹的单元。
在上述实施例的基础上,作为一种优选实施方式,所述提取模块403包括:
提取单元,用于提取在所述黑数据集中出现概率大于第一预设值且在所述白数据集中出现概率小于第二预设值的语法指纹作为语法指纹库,以便利用所述语法指纹库进行SQL注入检测。
第一获取单元,用于获取用户流量,并对所述用户流量进行解码操作;
第一判定单元,用于当解码后的流量命中所述语法指纹库时,判定所述用户流量为SQL注入攻击。
在上述实施例的基础上,作为一种优选实施方式,所述提取模块403具体为提取在所述黑数据集中出现概率大于第一预设值且在所述白数据集中出现概率小于第二预设值的语法指纹作为语法指纹库,以便利用基于正则规则的引擎和所述语法指纹库进行SQL注入检测的模块。
在上述实施例的基础上,作为一种优选实施方式,所述提取模块403包括:
提取单元,用于提取在所述黑数据集中出现概率大于第一预设值且在所述白数据集中出现概率小于第二预设值的语法指纹作为语法指纹库,以便利用所述语法指纹库进行SQL注入检测。
第二获取单元,用于获取用户流量,并对所述用户流量进行解码操作;
第二判定单元,用于当解码后的流量命中所述基于正则规则的引擎和所述语法指纹库时,判定所述用户流量为SQL注入攻击。
在上述实施例的基础上,作为一种优选实施方式,所述第二判定单元包括:
第一判断子单元,用于判断所述解码后的流量是否命中所述基于正则规则的引擎;若否,则启动第二判断子单元的工作流程;
所述第二判断子单元,用于判断所述解码后的流量是否命中所述语法指纹库;若是,则启动判定子单元的工作流程;
所述判定子单元,用于判定所述用户流量为SQL注入攻击。
关于上述实施例中的系统,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
本申请还提供了一种电子设备,参见图5,本申请实施例提供的一种电子设备500的结构图,如图5所示,可以包括处理器11和存储器12。该电子设备500还可以包括多媒体组件13,输入/输出(I/O)接口14,以及通信组件15中的一者或多者。
其中,处理器11用于控制该电子设备500的整体操作,以完成上述的SQL注入检测方法中的全部或部分步骤。存储器12用于存储各种类型的数据以支持在该电子设备500的操作,这些数据例如可以包括用于在该电子设备500上操作的任何应用程序或方法的指令,以及应用程序相关的数据,例如联系人数据、收发的消息、图片、音频、视频等等。该存储器12可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,例如静态随机存取存储器(Static Random Access Memory,简称SRAM),电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,简称EEPROM),可擦除可编程只读存储器(Erasable Programmable Read-Only Memory,简称EPROM),可编程只读存储器(Programmable Read-Only Memory,简称PROM),只读存储器(Read-Only Memory,简称ROM),磁存储器,快闪存储器,磁盘或光盘。多媒体组件13可以包括屏幕和音频组件。其中屏幕例如可以是触摸屏,音频组件用于输出和/或输入音频信号。例如,音频组件可以包括一个麦克风,麦克风用于接收外部音频信号。所接收的音频信号可以被进一步存储在存储器12或通过通信组件15发送。音频组件还包括至少一个扬声器,用于输出音频信号。I/O接口14为处理器11和其他接口模块之间提供接口,上述其他接口模块可以是键盘,鼠标,按钮等。这些按钮可以是虚拟按钮或者实体按钮。通信组件15用于该电子设备500与其他设备之间进行有线或无线通信。无线通信,例如Wi-Fi,蓝牙,近场通信(Near FieldCommunication,简称NFC),2G、3G或4G,或它们中的一种或几种的组合,因此相应的该通信组件15可以包括:Wi-Fi模块,蓝牙模块,NFC模块。
在一示例性实施例中,电子设备500可以被一个或多个应用专用集成电路(Application Specific Integrated Circuit,简称ASIC)、数字信号处理器(DigitalSignal Processor,简称DSP)、数字信号处理设备(Digital Signal Processing Device,简称DSPD)、可编程逻辑器件(Programmable Logic Device,简称PLD)、现场可编程门阵列(Field Programmable Gate Array,简称FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述的SQL注入检测方法。
在另一示例性实施例中,还提供了一种包括程序指令的计算机可读存储介质,该程序指令被处理器执行时实现上述SQL注入检测方法的步骤。例如,该计算机可读存储介质可以为上述包括程序指令的存储器12,上述程序指令可由电子设备500的处理器11执行以完成上述的SQL注入检测方法。
说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。
还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

Claims (21)

1.一种SQL注入检测方法,其特征在于,包括:
获取包含SQL注入的流量数据和正常流量数据,并将所有所述包含SQL注入的流量数据组成黑数据集,将所有所述正常流量数据组成白数据集;
将所述黑数据集和所述白数据集中的每条流量数据转换为token序列,并抽取所述token序列的N元组作为语法指纹;其中,N为正整数;
提取在所述黑数据集中出现概率大于第一预设值且在所述白数据集中出现概率小于第二预设值的语法指纹作为语法指纹库,以便利用所述语法指纹库对解码后的用户流量进行SQL注入检测。
2.根据权利要求1所述SQL注入检测方法,其特征在于,抽取所述token序列的N元组作为语法指纹,包括:
对所述token序列进行折叠,并抽取折叠后的token序列的N元组作为所述语法指纹。
3.根据权利要求2所述SQL注入检测方法,其特征在于,对所述token序列进行折叠,包括:
将所述流量数据中语义上等价的关键字在所述token序列中对应的token关键字进行折叠。
4.根据权利要求3所述SQL注入检测方法,其特征在于,对所述token序列进行折叠之前,还包括:
将所述流量数据中的目标关键字转换为所述token序列中的目标token;其中,所述目标关键字包括注释、数学表达式和引用字符串中的任一项或任几项的组合。
5.根据权利要求2所述SQL注入检测方法,其特征在于,所述抽取折叠后的token序列的N元组作为所述语法指纹,包括:
抽取折叠后的token序列的N元组作为候选语法指纹,并抽取所述候选语法指纹中包含关键token的语法指纹作为所述语法指纹。
6.根据权利要求1所述SQL注入检测方法,其特征在于,利用所述语法指纹库进行SQL注入检测,包括:
获取用户流量,并对所述用户流量进行解码操作;
当解码后的流量命中所述语法指纹库时,判定所述用户流量为SQL注入攻击。
7.根据权利要求1至5中任一项所述SQL注入检测方法,其特征在于,利用所述语法指纹库进行SQL注入检测,包括:
利用基于正则规则的引擎和所述语法指纹库进行SQL注入检测。
8.根据权利要求7所述SQL注入检测方法,其特征在于,所述基于正则规则的引擎包括Snort引擎。
9.根据权利要求7所述SQL注入检测方法,其特征在于,所述利用基于正则规则的引擎和所述语法指纹库进行SQL注入检测,包括:
获取用户流量,并对所述用户流量进行解码操作;
当解码后的流量命中所述基于正则规则的引擎和所述语法指纹库时,判定所述用户流量为SQL注入攻击。
10.根据权利要求9所述SQL注入检测方法,其特征在于,所述当解码后的流量命中所述基于正则规则的引擎和所述语法指纹库时,判定所述用户流量为SQL注入攻击,包括:
判断所述解码后的流量是否命中所述基于正则规则的引擎;
若没有命中所述基于正则规则的引擎,则判断所述解码后的流量是否命中所述语法指纹库;
若命中所述语法指纹库,则判定所述用户流量为SQL注入攻击。
11.一种SQL注入检测系统,其特征在于,包括:
获取模块,用于获取包含SQL注入的流量数据和正常流量数据,并将所有所述包含SQL注入的流量数据组成黑数据集,将所有所述正常流量数据组成白数据集;
转换模块,用于将所述黑数据集和所述白数据集中的每条流量数据转换为token序列,并抽取所述token序列的N元组作为语法指纹;其中,N为正整数;
提取模块,用于提取在所述黑数据集中出现概率大于第一预设值且在所述白数据集中出现概率小于第二预设值的语法指纹作为语法指纹库,以便利用所述语法指纹库对解码后的用户流量进行SQL注入检测。
12.根据权利要求11所述SQL注入检测系统,其特征在于,所述转换模块包括:
第一转换单元,用于将所述黑数据集和所述白数据集中的每条流量数据转换为token序列;
折叠单元,用于对所述token序列进行折叠;
抽取单元,用于抽取折叠后的token序列的N元组作为语法指纹的模块。
13.根据权利要求12所述SQL注入检测系统,其特征在于,所述折叠单元具体为将所述流量数据中语义上等价的关键字在所述token序列中对应的token关键字进行折叠的单元。
14.根据权利要求13所述SQL注入检测系统,其特征在于,还包括:
第二转换单元,用于将所述流量数据中的目标关键字转换为所述token序列中的目标token;其中,所述目标关键字包括注释、数学表达式和引用字符串中的任一项或任几项的组合。
15.根据权利要求12所述SQL注入检测系统,其特征在于,所述抽取单元具体为抽取折叠后的token序列的N元组作为候选语法指纹,并抽取所述候选语法指纹中包含关键token的语法指纹作为所述语法指纹的单元。
16.根据权利要求11所述SQL注入检测系统,其特征在于,所述提取模块包括:
提取单元,用于提取在所述黑数据集中出现概率大于第一预设值且在所述白数据集中出现概率小于第二预设值的语法指纹作为语法指纹库,以便利用所述语法指纹库进行SQL注入检测;
第一获取单元,用于获取用户流量,并对所述用户流量进行解码操作;
第一判定单元,用于当解码后的流量命中所述语法指纹库时,判定所述用户流量为SQL注入攻击。
17.根据权利要求11至15中任一项所述SQL注入检测系统,其特征在于,所述提取模块具体为提取在所述黑数据集中出现概率大于第一预设值且在所述白数据集中出现概率小于第二预设值的语法指纹作为语法指纹库,以便利用基于正则规则的引擎和所述语法指纹库进行SQL注入检测的模块。
18.根据权利要求17所述SQL注入检测系统,其特征在于,所述提取模块包括:
提取单元,用于提取在所述黑数据集中出现概率大于第一预设值且在所述白数据集中出现概率小于第二预设值的语法指纹作为语法指纹库,以便利用所述语法指纹库进行SQL注入检测;
第二获取单元,用于获取用户流量,并对所述用户流量进行解码操作;
第二判定单元,用于当解码后的流量命中所述基于正则规则的引擎和所述语法指纹库时,判定所述用户流量为SQL注入攻击。
19.根据权利要求18所述SQL注入检测系统,其特征在于,所述第二判定单元包括:
第一判断子单元,用于判断所述解码后的流量是否命中所述基于正则规则的引擎;若否,则启动第二判断子单元的工作流程;
所述第二判断子单元,用于判断所述解码后的流量是否命中所述语法指纹库;若是,则启动判定子单元的工作流程;
所述判定子单元,用于判定所述用户流量为SQL注入攻击。
20.一种电子设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至10任一项所述SQL注入检测方法的步骤。
21.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至10任一项所述SQL注入检测方法的步骤。
CN201910430596.1A 2019-05-22 2019-05-22 一种sql注入检测方法、系统及电子设备和存储介质 Active CN111984970B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910430596.1A CN111984970B (zh) 2019-05-22 2019-05-22 一种sql注入检测方法、系统及电子设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910430596.1A CN111984970B (zh) 2019-05-22 2019-05-22 一种sql注入检测方法、系统及电子设备和存储介质

Publications (2)

Publication Number Publication Date
CN111984970A CN111984970A (zh) 2020-11-24
CN111984970B true CN111984970B (zh) 2023-11-07

Family

ID=73436624

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910430596.1A Active CN111984970B (zh) 2019-05-22 2019-05-22 一种sql注入检测方法、系统及电子设备和存储介质

Country Status (1)

Country Link
CN (1) CN111984970B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113872965B (zh) * 2021-09-26 2023-05-09 国网四川省电力公司乐山供电公司 一种基于Snort引擎的SQL注入检测方法

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7530107B1 (en) * 2007-12-19 2009-05-05 International Business Machines Corporation Systems, methods and computer program products for string analysis with security labels for vulnerability detection
US8499170B1 (en) * 2008-10-08 2013-07-30 Trend Micro, Inc. SQL injection prevention
CN103744802A (zh) * 2013-12-20 2014-04-23 北京奇虎科技有限公司 Sql注入攻击的识别方法及装置
CN105160252A (zh) * 2015-08-10 2015-12-16 北京神州绿盟信息安全科技股份有限公司 一种结构化查询语言注入攻击的检测方法及装置
WO2016122604A1 (en) * 2015-01-30 2016-08-04 Hewlett Packard Enterprise Development Lp Protection against database injection attacks
WO2017028789A1 (zh) * 2015-08-17 2017-02-23 北京神州绿盟信息安全科技股份有限公司 网络攻击检测方法和设备
CN107483502A (zh) * 2017-09-28 2017-12-15 深信服科技股份有限公司 一种检测残余攻击的方法及装置
CN107644175A (zh) * 2017-09-13 2018-01-30 南京南瑞集团公司 一种防止sql注入的方法
CN107657174A (zh) * 2016-07-26 2018-02-02 北京计算机技术及应用研究所 一种基于协议指纹的数据库入侵检测方法
CN108959926A (zh) * 2018-06-27 2018-12-07 杭州安恒信息技术股份有限公司 一种sql注入攻击的检测方法
CN109688137A (zh) * 2018-12-27 2019-04-26 深信服科技股份有限公司 一种sql注入攻击的检测方法、系统及相关组件

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1589716A1 (en) * 2004-04-20 2005-10-26 Ecole Polytechnique Fédérale de Lausanne (EPFL) Method of detecting anomalous behaviour in a computer network
EP3295359B1 (en) * 2015-05-15 2020-08-26 Virsec Systems, Inc. Detection of sql injection attacks

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7530107B1 (en) * 2007-12-19 2009-05-05 International Business Machines Corporation Systems, methods and computer program products for string analysis with security labels for vulnerability detection
US8499170B1 (en) * 2008-10-08 2013-07-30 Trend Micro, Inc. SQL injection prevention
CN103744802A (zh) * 2013-12-20 2014-04-23 北京奇虎科技有限公司 Sql注入攻击的识别方法及装置
WO2016122604A1 (en) * 2015-01-30 2016-08-04 Hewlett Packard Enterprise Development Lp Protection against database injection attacks
CN105160252A (zh) * 2015-08-10 2015-12-16 北京神州绿盟信息安全科技股份有限公司 一种结构化查询语言注入攻击的检测方法及装置
WO2017028789A1 (zh) * 2015-08-17 2017-02-23 北京神州绿盟信息安全科技股份有限公司 网络攻击检测方法和设备
CN107657174A (zh) * 2016-07-26 2018-02-02 北京计算机技术及应用研究所 一种基于协议指纹的数据库入侵检测方法
CN107644175A (zh) * 2017-09-13 2018-01-30 南京南瑞集团公司 一种防止sql注入的方法
CN107483502A (zh) * 2017-09-28 2017-12-15 深信服科技股份有限公司 一种检测残余攻击的方法及装置
CN108959926A (zh) * 2018-06-27 2018-12-07 杭州安恒信息技术股份有限公司 一种sql注入攻击的检测方法
CN109688137A (zh) * 2018-12-27 2019-04-26 深信服科技股份有限公司 一种sql注入攻击的检测方法、系统及相关组件

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
一种新的反SQL注入策略的研究与实现;周敬利;王晓锋;余胜生;夏洪涛;;计算机科学(第11期);全文 *
基于通用规则的SQL注入攻击检测与防御系统的研究;王苗苗;钱步仁;许莹莹;王雪凤;;电子设计工程(第05期);全文 *

Also Published As

Publication number Publication date
CN111984970A (zh) 2020-11-24

Similar Documents

Publication Publication Date Title
US7035789B2 (en) Supervised automatic text generation based on word classes for language modeling
CN109246064B (zh) 安全访问控制、网络访问规则的生成方法、装置及设备
US10325097B2 (en) Static detection of context-sensitive cross-site scripting vulnerabilities
US10769373B2 (en) Contextual validation of synonyms in otology driven natural language processing
US12003535B2 (en) Phishing URL detection using transformers
CN113961768B (zh) 敏感词检测方法、装置、计算机设备和存储介质
US9600644B2 (en) Method, a computer program and apparatus for analyzing symbols in a computer
JP2008299723A (ja) プログラム検証方法、プログラム検証装置
CN113067792A (zh) 一种xss攻击识别方法、装置、设备及介质
CN111984970B (zh) 一种sql注入检测方法、系统及电子设备和存储介质
CN117940894A (zh) 用于检测代码克隆的系统和方法
US20240028740A1 (en) Source code vulnerability detection and repair through machine learning
CN116467047A (zh) 针对容器配置合规性的检测方法、装置、存储介质及终端
CN113688240B (zh) 威胁要素提取方法、装置、设备及存储介质
CN115455416A (zh) 一种恶意代码检测方法、装置、电子设备及存储介质
CN114238131A (zh) 代码检测方法、装置、计算机可读介质及电子设备
Huang et al. Large scale experiments on correction of confused words
CN115455179B (zh) 敏感词汇检测方法、装置、设备及存储介质
CN111488511B (zh) 一种网站主题提取方法、系统及电子设备和存储介质
Valentim et al. AI-based Sound-Squatting Attack Made Possible
CN117370982A (zh) 确定文件风险的方法和装置
CN117609032A (zh) 基于大语言模型的异常编码修复方法、装置、设备及介质
CN116756341A (zh) 基于多源漏洞数据的完备知识图谱构建方法
WO2024019848A1 (en) Source code vulnerability detection and repair through machine learning
CN117436084A (zh) 源代码漏洞检测方法及装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant