CN102567546A - 一种sql注入检测方法及装置 - Google Patents

一种sql注入检测方法及装置 Download PDF

Info

Publication number
CN102567546A
CN102567546A CN201210016445XA CN201210016445A CN102567546A CN 102567546 A CN102567546 A CN 102567546A CN 201210016445X A CN201210016445X A CN 201210016445XA CN 201210016445 A CN201210016445 A CN 201210016445A CN 102567546 A CN102567546 A CN 102567546A
Authority
CN
China
Prior art keywords
sql
sql statement
injects
eigenwert
parameter
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.)
Granted
Application number
CN201210016445XA
Other languages
English (en)
Other versions
CN102567546B (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.)
Nsfocus Technologies Inc
Nsfocus Technologies Group Co Ltd
Original Assignee
Beijing NSFocus Information Security Technology 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 Beijing NSFocus Information Security Technology Co Ltd filed Critical Beijing NSFocus Information Security Technology Co Ltd
Priority to CN201210016445.XA priority Critical patent/CN102567546B/zh
Publication of CN102567546A publication Critical patent/CN102567546A/zh
Application granted granted Critical
Publication of CN102567546B publication Critical patent/CN102567546B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

本发明公开了一种SQL注入检测方法及装置,用以减少SQL注入检测过程中的漏报和误报,提高SQL注入检测的准确性。其中,SQL注入检测方法包括:接收用户提交的结构化查询语言SQL语句;判断所述SQL语句是否满足预设的被动防御检测条件;在判断结果为是时,判定所述SQL语句为SQL注入;在判断结果为否时,继续判断所述SQL语句是否满足预设的主动防御检测条件;如果满足,判定所述SQL语句为合法SQL语句;如果不满足,判定所述SQL语句为SQL注入。

Description

一种SQL注入检测方法及装置
技术领域
本发明涉及计算机技术领域,尤其涉及一种SQL注入检测方法及装置。
背景技术
随着B/S(浏览器/服务器)模式应用开发的发展,使用这种模式编写应用程序的程序员越来越多,但是,由于大部分程序员在编写代码的时候,没有对客户端侧用户输入数据的合法性进行检测,使得应用程序存在一定的安全隐患,导致应用程序存在结构化查询语言(SQL,Structured Query Language)注入风险。
SQL是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;而SQL注入通过把SQL命令插入到Web表单中,或把SQL命令输入域名中或把SQL命令插入到页面请求的查询字符串中,最终达到欺骗服务器来执行恶意的SQL命令。攻击者通过SQL注入,对应用程序造成攻击,从而获得敏感信息,并且在一些情况下,还有可能导致服务器权限的丢失。因此,对于数据库系统来说,防御SQL注入相当重要,而网站管理人员对SQL注入的防御也极其重视。目前,常见的SQL注入防御技术主要包括以下三种:
1、关键字识别技术
关键字识别技术主要是检测用户提交的SQL语句中的关键字,由于攻击者在进行SQL注入攻击时,往往会采用先探测应用程序是否有漏洞,然后再攻击的思路进行,而在探测过程中,会采用一些加单引号,或加“and 1=1”等类似的语句,这样,服务器可以对用户提交的SQL语句中包含的相关参数进行检测,看其中是否有上述的关键字,如果有,则报警并进行拦截,同理,在攻击阶段,攻击者会利用数据库的特性来攻击,并取得需要的信息,譬如常见的union select,xp_cmdshell等。
2、正则识别技术
正则识别技术是在关键字识别技术的基础上发展而来的,由于在一些攻击测试中,仅靠“and 1=1”等关键字,在防御SQL注入时存在一定的确定,例如,攻击者使用“and 2=2”来代替“and 1=1”,便能够绕过关键字识别技术的检测,由此,采用正则识别技术能够莫不这种缺陷,使用“and *=*“来代替“and1=1”即可,这样,相对于关键字识别技术来说,减少了误报和漏报。
3、基于自学习的数据库SQL注入防御技术
在安全环境下学习合法的SQL语句,建立合法SQL语句知识库,当服务器检测到用户提交的SQL语句与知识库中合法SQL语句不匹配时,则判定存在SQL注入企图。
上述三种SQL注入防御技术统称为基于特征的SQL注入检测方法,但是由于SQL语句的多样性,以及SQL注入的灵活性,上述第一种检测方法中,误报率很高,尤其是一些外文的网站,用户提交大段的英文后,很容易匹配上预设的关键字,并且根据SQL语句的灵活性,有经验的攻击者很容易绕过服务器侧预设的关键字进行攻击,降低了SQL注入检测的准确性;而上述第二种检测方法中,虽然相对于第一种检测技术来说,降低了SQL注入检测误报率和漏报率,攻击者绕过的难度大一些,但是依然存在SQL注入检测的准确性较低的问题;而上述第三种检测技术中,要求服务器学习所有合法的SQL语句,否则会把合法SQL语句误认为是非法SQL语句,同样存在准确性较低的问题。
由此可见,攻击者可以采用各种编码方式,来绕过基于特征的SQL注入检测方法,使得网站入侵防御系统(IPS,Intrusion Prevention System)和防火墙形同虚设,导致基于特征的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注入,从而减少了SQL注入检测过程中的误报和漏报,提高了SQL注入检测的准确性。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
附图说明
图1为本发明实施例中,对用户提交的SQL语句进行检测的工作原理示意图;
图2为本发明实施例中,被动防御检测流程的实施流程示意图;
图3为本发明实施例中,主动防御检测流程的实施流程示意图;
图4为本发明实施例中,SQL注入检测方法的实施流程示意图;
图5为本发明实施例中,SQL注入检测装置的结构示意图。
具体实施方式
为了减少SQL注入检测过程中的误报和漏报,提高SQL注入检测的准确性,本发明实施例提供一种SQL注入检测方法及装置。
以下结合说明书附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明,并且在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。
如图1所示,为本发明实施例中,对用户提交的SQL语句进行检测的工作原理示意图,包括以下步骤:
S101、接收用户提交的SQL语句;
本发明实施例中涉及的SQL语句可以包括但不限于超文本传输协议(HTTP,HyperText Transfer Protocol)请求,查询请求以及用户身份验证数据。
S102、按照预设标准对接收到的SQL语句进行预处理;
具体的,以SQL语句为HTTP请求为例,服务器对接收到的HTTP进行解码,并进行统一资源定位符(URL,Uniform Resource Location)标准化处理,主要包括将接收到的SQL语句去掉注释,多余的空格,以去除接收到的SQL语句中的一些畸形数据。
通过对用户输入的SQL语句进行预处理,能够将用户提交的SQL语句标准化,这样,能够提高后续在进行主动防御检测或者被动防御检测过程中,获取该SQL语句中的SQL注入特征值或者指定参数时的准确性,避免由于原始SQL语句中的畸形数据对检测结果造成的影响。
S103、对预处理之后的SQL语句进行被动防御检测,确定该SQL语句是否满足预设的被动防御检测条件;
具体的,查找接收到的SQL语句中的SQL注入特征值,其中,SQL注入特征值可以根据日常经验进行总结,从而能够获得一系列具有SQL注入特征的字符串,本发明实施例中将这些总结出来的字符串称为SQL注入特征值。
对于每一个SQL注入特征值,按照其攻击危害程度分为多个等级,针对不同的等级赋予不同的权值,为了便于理解,本发明实施例中以分为3个等级为例进行说明。例如,将SQL语句中包含的单引号(‘)或者“and *=*”以及类似的字符串作为第一类SQL注入特征值,其对应的权值为10;将SQL语句中包含的union select,order by以及类似的字符串作为第二类SQL注入特征值,其对应的权值为20;将SQL语句中包含的xp_cmdshell以及类似的字符串作为第三类SQL注入特征值。从而针对从接收到的SQL语句中查找到的每一个SQL注入特征值,与上述每一类的SQL注入特征值一一进行匹配,从而确定该SQL注入特征值对应的权值,最后,将接收到的SQL语句中查找到的每一个SQL注入特征值对应的权值相加得到权值之和,亦即,Sn=Sn-1+class(m).Valuen,n≥1,m=1,2,3,其中,Sn表示提取出的n个SQL注入特征值对应的权值之和,Sn-1表示前n-1个SQL注入特征值对应的权值之和,class(m).Valuen表示提取出的第n个SQL注入特征值对应的权值,m表示提取出的第n个SQL注入特征值对应的类别,假设第n个SQL注入特征值为第三类SQL注入特征值,则其对应的权值为class(3).Valuen=30,初始化时,设置S0=0。判断Sn是否超过预设阈值,如果是,则确定接收到的SQL语句满足预设的被动防御检测条件,如果否,确定接收到的SQL语句不满足预设的被动防御检测条件,若接收到的SQL语句不满足预设的被动防御检测条件时,还需要对该SQL语句进行主动防御检测,以确定该SQL语句是否满足主动防御检测条件。
需要说明的是,本发明实施例提供的根据SQL语句中包含的SQL注入特征值对应的权值之和是否预设阈值判断SQL语句是否满足被动防御检测条件,只是本发明实施例的一种较佳地实施方法,具体实施中,还可以根据其它方法来确定SQL语句是否满足被动检测条件,这里不做限定。
较佳地,具体实施时,网站管理员可以对预设阈值进行手动调整,通过对该预设阈值的调整,来控制SQL注入检测的粒度,以确保将SQL注入检测控制在能够容忍的漏报和误报范围内。
本发明实施例中,若SQL语句通过被动防御检测之后,即该SQL满足预设的被动防御检测条件时,需要对该SQL语句继续进行主动防御检测。
S104、继续对预处理之后的SQL语句进行主动防御检测,确定该SQL语句是否满足预设的主动防御检测条件;
具体的,获得预处理之后的SQL语句中包含的指定参数,并确定该指定参数对应的参数类型,指定参数为SQL语句中一些常见的参数,例如,用户提交的URL中包含的id和classid等,如果与预先存储的该指定参数对应的参数类型匹配,则说明该SQL语句满足预设的主动防御检测条件,否则,说明该SQL语句不满足预设的主动防御检测条件。
较佳地,本发明实施例中,可以通过以下方法确定指定参数对应的参数类型,为了便于描述,以指定参数为id为例进行说明:学习预设数量的SQL语句中id的参数类型,来确定其对应的参数类型,其中,用于学习的SQL语句称为样本数据。具体来说,提取样本数据中的URL、FORM表单或者COOKIE等中包含的id进行分析统计,并根据统计结果确定id对应的参数类型。具体实施时,需要预先根据指定参数的值对不同的参数进行分类,例如,若该指定参数的值只包含数字时,确定该参数对应的参数类型为A,若该参数的值包含有数字、字母和除引号、尖括号之外的符号时,确定该参数对应的参数类型为B,若该参数的值包含有数字、字母、引号以及叫括号和其它内容时,确定该参数对应的参数类型为C。并针对每一参数类型,统计样本数据中该参数类型的数量,并选择数量最多的参数类型确定为该参数的参数类型。需要说明的是,上述参数类型的分类方法,只用于说明本发明实施例,而不用于对本发明实施例的限定,具体实施时,可以根据实际情况选择参数类型的分类方法。
由此可见,本发明实施例中,即使攻击者利用已有经验,通过改变SQL注入特征值来绕过被动防御检测,即攻击者使用包含未知SQL注入特征值的SQL语句进行攻击时,在主动防御检测中,能够通过提取用户输入的SQL语句中的指定参数,并对该指定参数的参数类型进行匹配,当发现用户输入的SQL语句中的指定参数对应的参数类型与该指定参数实际对应的参数类型不匹配时,依然能够识别该用户输入的SQL语句为SQL注入,并触发报警操作,拦截该SQL语句,从而实现对未知SQL注入攻击的检测。
为了便于理解本发明实施例,以下以用户访问主机地址为:www.xxx.com为例,假设用户提交的URL为:/bbs/newa.asp,假设样本数据为100个,即对用户提交的100个SQL语句进行分析统计,最后的统计结果如下(以分别确定参数id和Classid对应的参数类型为例):
Figure BDA0000132086330000081
根据上述统计结果可知,对于参数id来说,100个样本数据中有90个SQL语句能够确定参数id的参数类型为A,有4个SQL语句能够确定参数id的参数类型为B,有6个SQL语句能够确定参数id的参数类型为C,可见,数量最多的参数类型为A,因此,确定参数id对应的参数类型为A。同理,可以确定出参数Classid对应的参数类型也为A,确定出指定参数对应的参数类型之后,将统计结果进行存储。较佳地,网站管理员可以根据管理需要,对一些参数的参数类型进行配置。在进行SQL注入检测时,可以利用上述统计结果进行主动防御检测。例如,当用户提交的SQL语句中包含www.XXX.com/bbs/news.asp?id=2&classid=4,由于id和calssid对应的值只包含数字,因此,可以确定id和classid对应的参数类型均为A,因此,确定该SQL语句满足预设的主动防御检测条件。而如果用户提交的SQL语句中包含www.XXX.com/bbs/news.asp?id=2&classid=4’a,由于classid的值包含的内容中存在引号,因此确定classid对应的参数类型为C,而预先存储的classid对应的参数类型为A,可见,二者不匹配,从而判定该SQL语句不满足预设的主动防御检测条件。
需要说明的是,本发明实施例提供的根据SQL语句中包含的指定参数对应的参数类型与预先存储的该指定参数对应的参数类型是否匹配来确定该SQL语句是否满足主动防御检测条件,只是本发明实施例的一种较佳地实施方法,具体实施中,还可以根据其它方法来确定SQL语句是否满足主动检测条件,这里不做限定。
较佳地,本发明实施例中在判定出用户提交的SQL语句为SQL注入之后,可以触发报警操作,并拦截该SQL语句。这样,有效避免了攻击者通过SQL注入获得服务器中的敏感数据,对应用程序造成攻击,增强了服务器应用程序的安全性。
如果用户提交的SQL语句通过被动防御检测和主动防御检测,将由服务器执行该SQL语句,由于在一些SQL注入攻击中,一些攻击者往往会通过服务器返回的错误信息来判断攻击是否有效,更佳地,本发明实施例中,为了避免上述情况的出现,预先存储发生SQL注入攻击时,服务器返回的错误信息列表,当服务器向用户返回错误信息时,首先判断该错误信息是否在预先存储的错误信息列表中,如果是,则将该错误信息过滤,不返回给用户。这样,使得攻击者在进行SQL注入攻击时,如果攻击者输入的SQL语句在被动防御检测或者主动防御检测过程中被拦截而导致攻击失败时,无法获知攻击结果,避免了攻击者从返回结果中获取其他可利用的攻击信息。
基于此,本发明实施例提供的SQL注入检测方法,还可以包括以下步骤:
S105、判断服务器返回的错误信息是否在预先存储的错误信息列表中,如果是,执行步骤S106,否则,执行步骤S107;
S106、过滤该错误信息;
S107、将错误信息返回给用户。
为了更好地理解本发明实施例,以下分别对被动防御检测和主动防御检测的实施流程进行说明。
如图2所示,为本发明实施例提供的被动防御检测流程的实施流程示意图,为了便于理解,本发明实施例中仍然以将SQL注入特征值划分为3个等级为例,包括以下步骤:
S201、初始化预处理之后的SQL语句中包含的SQL注入特征值的权值之和;
具体实施中,在对预处理之后的SQL语句包含的SQL注入特征值的权值之和进行初始化时,可以设置Sn=0,n表示预处理之后的SQL语句中包含的第n个SQL注入特征值。
S202、判断该SQL语句中是否包含第一类SQL注入特征值,如果是,执行步骤S203,否则执行步骤S204;
S203、更新Sn的值;
其中,更新后的Sn为:Sn=Sn-1+class(1).Valuen;具体实施时,从预处理后的SQL语句包含的第一个字符开始,依次扫描该SQL语句,当查找到第一类SQL注入特征值时,此时,n=1,假设第一类SQL注入特征值对应的权值为10,即class(1).Value1=10,则S1=S0+class(1).Value1=0+10=10。
S204、判断该SQL语句中是否包含第二类SQL注入特征值,如果是,执行步骤S205,否则执行步骤S206;
S205、更新Sn的值;
经过步骤S202~步骤S203之后,假设存在第一类SQL注入特征值,显然,S1=10,在步骤S204中,从预处理后的SQL语句包含的第一个字符开始,重新依次扫描该SQL语句,当查找到第二类SQL注入特征值时,此时,n=2,假设第二类SQL注入特征值对应的权值为20,即class(1).Value3=20,则S2=S1+class(2).Value3=10+20=30。
S206、判断该SQL语句中是否包含第三类SQL注入特征值,如果是,执行步骤S207,否则执行步骤S208;
S207、更新Sn的值;
若经过步骤S202~步骤S205之后,假设存在第一类SQL注入特征值和第二类SQL注入特征值,显然,此时S2=30,在步骤S206中,从预处理后的SQL语句包含的第一个字符开始,重新依次扫描该SQL语句,若查找到第三类SQL注入特征值时,此时,n=3,假设第三类SQL注入特征值对应的权值为30,即class(3).Value3=30,则S3=S2+class(3).Value3=30+30=60;若经过步骤S202~步骤S205之后,不存在第一类和第二类SQL注入特征值,此时,n=1,则S1=S0+class(3).Value1=0+30=30;若第一类和第二类SQL注入特征值只存在其中的一个,假设存在第二类SQL注入特征值,则S1=20,由于查找到第三类SQL注入特征值,此时,n=2,则S2=S1+class(3).Value1=20+30=50。
经过步骤S202~步骤S207之后,能够得到该SQL语句中包含的所有的SQL注入特征值对应的权值之和Sn
S208、判断Sn是否超过预设阈值,如果是,执行步骤S209,否则,执行步骤S210;
S209、判定该SQL语句为SQL注入;
S210、对SQL语句进行主动防御检测。
如图3所示,为本发明实施例中主动防御检测的实施流程示意图,包括以下步骤:
S301、获得预处理之后的SQL语句中的指定参数;
例如,以参数a=123,参数b=456’为例;根据步骤S104中参数类型的确定方法可知,参数a对应的参数类型为A,参数b对应的参数类型为C。
S302、确定指定参数对应的参数类型;
具体的,根据步骤S104中参数类型的确定方法可知,参数a对应的参数类型为A,参数b对应的参数类型为C。
S303、分别判断确定出的参数a和参数b的参数类型与预先存储的参数a和参数b的参数类型是否匹配,如果匹配,执行步骤S304,如果不匹配,执行步骤S305;
S304、判定该SQL语句为合法SQL语句;
S305、判定该SQL语句为SQL注入。
基于上述分析,如图4所示,本发明实施例提供的SQL注入检测方法的实施流程示意图,可以包括以下步骤:
S401、接收用户提交的SQL语句;
S402、判断该SQL语句是否满足预设的主动防御检测条件,如果是,执行步骤S403,否则,执行步骤S404;
具体的,可以按照以下步骤判断该SQL语句是否满足预设的主动防御检测条件:
步骤一、从该SQL语句中依次查找每一个SQL注入特征值;
步骤二、根据查找到的每一个SQL注入特征值对应的权值,确定该SQL语句中包含的各SQL注入特征值对应的权值之和;
步骤三、判断各SQL注入特征值对应的权值之和是否超过预设阈值,若果是,执行步骤四,如果否,执行步骤五;
步骤四、确定该SQL语句满足预设的被动防御检测条件;
步骤五、确定该SQL语句不满足预设的被动防御检测条件。
S403、判定该SQL语句为SQL注入;
S404、继续判断该SQL语句是否满足预设的主动防御检测条件,如果是,执行步骤S405,否则,执行步骤S406;
具体的,可以按照以下步骤判断该SQL语句是否满足预设的被动防御检测条件:
步骤一、获得该SQL语句中的指定参数;
步骤二、针对获得的每一个指定参数,确定该指定参数对应的第一参数类型;
步骤三、若该第一参数类型与预先存储的、该指定参数对应的第二参数类型匹配时,确定该SQL语句满足预设的被动防御检测条件,否则,确定该SQL语句不满足预设的被动防御检测条件。
S405、判定该SQL语句为合法SQL语句;
S406、判定该SQL语句为SQL注入。
基于同一发明构思,本发明实施例中还提供了一种SQL注入检测装置,由于该装置解决问题的原理与SQL注入检测方法相似,因此该装置的实施可以参见方法的实施,重复之处不再赘述。
如图5所示,为本发明实施例提供的SQL注入检测装置的结构示意图,包括:
接收单元501,用于接收用户提交的SQL语句;
第一判断单元502,用于判断接收单元501接收到的SQL语句是否满足预设的被动防御检测条件;
第一判定单元503,用于在第一判断单元502的判断结果为是时,判定该SQL语句为SQL注入;
第二判断单元504,用于在第一判断单元502的判断结果为否时,继续判断该SQL语句是否满足预设的主动防御检测条件;
第二判定单元505,用于在第二判断单元504的判断结果为是时,判定该SQL语句为合法SQL语句;
第三判定单元506,用于在第二判断单元504的判断结果为否时,判定该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注入检测装置也可以独立设置。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
本发明实施例提供的SQL注入检测方法及装置,在进行SQL注入检测时,首先根据预设的主动防御检测条件,判断用户输入的SQL语句是否满足该主动防御检测条件,如果满足则可以直接判定用户提交的SQL语句为SQL注入,否则,进一步根据预设的被动防御检测条件,判断用户输入的SQL语句是否满足该被动防御检测条件,如果满足则判定该SQL语句与合法SQL语句,如果不满足,则判定用户输入的SQL语句为SQL注入。由此可见,本发明实施例中,通过设置两道检测屏障,增加了攻击者的攻击难度,同时,用户提交的SQL语句如果通过主动防御检测,在被动防御检测过程中,也能够准确识别SQL注入,从而减少了SQL注入检测过程中的误报和漏报,提高了SQL注入检测的准确性。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (17)

1.一种SQL注入检测方法,其特征在于,包括:
接收用户提交的结构化查询语言SQL语句;
判断所述SQL语句是否满足预设的被动防御检测条件;
在判断结果为是时,判定所述SQL语句为SQL注入;
在判断结果为否时,继续判断所述SQL语句是否满足预设的主动防御检测条件;
如果满足,判定所述SQL语句为合法SQL语句;
如果不满足,判定所述SQL语句为SQL注入。
2.如权利要求1所述的方法,其特征在于,判断所述SQL语句是否满足预设的被动防御检测条件,具体包括:
从所述SQL语句中依次查找每一个SQL注入特征值;并
根据查找到的每一个SQL注入特征值对应的权值,确定所述SQL语句中包含的各SQL注入特征值对应的权值之和;
判断各SQL注入特征值对应的权值之和是否超过预设阈值;
如果是,确定所述SQL语句满足预设的被动防御检测条件;
如果否,确定所述SQL语句不满足预设的被动防御检测条件。
3.如权利要求1所述的方法,其特征在于,判断所述SQL语句是否满足预设的主动防御检测条件,具体包括:
获得所述SQL语句中的指定参数;并
针对获得的每一个指定参数,确定该指定参数对应的第一参数类型,若所述第一参数类型与预先存储的、该指定参数对应的第二参数类型匹配时,确定所述SQL语句满足预设的被动防御检测条件,否则,确定所述SQL语句不满足预设的被动防御检测条件。
4.如权利要求1所述的方法,其特征在于,还包括:
获得执行所述SQL语句后的返回信息;以及
确定所述返回信息存在于预先存储的返回信息列表中时,过滤所述返回信息。
5.如权利要求1所述的方法,其特征在于,判定所述SQL语句为SQL注入之后,还包括;
并触发报警操作;并
拦截所述SQL语句。
6.如权利要求1所述的方法,其特征在于,提取用户提交的SQL语句中包含的至少一个SQL注入特征值之前,还包括:
按照预设标准对所述SQL语句进行预处理。
7.如权利要求1所述的方法,其特征在于,按照如下过程确定所述指定参数对应的第二参数类型:
提取指定数量的、用户提交的SQL语句中包含的所述指定参数;并
针对每一个用户提交的SQL语句中包含的所述指定参数,确定该指定参数对应的参数类型;
针对每一参数类型,分别统计该参数类型对应的数量;以及
将数量最多的参数类型确定为所述指定参数对应的第二参数类型。
8.如权利要求1所述的方法,其特征在于,按照以下过程确定任一SQL注入特征值对应的权值:
针对任一SQL注入特征值,确定该SQL注入特征值对应的特征值类别;
确定所述特征值类别对应的权值为该SQL注入特征值对应的权值。
9.一种SQL注入检测装置,其特征在于,包括:
接收单元,用于接收用户提交的结构化查询语言SQL语句;
第一判断单元,用于判断所述SQL语句是否满足预设的被动防御检测条件;
第一判定单元,用于在所述第一判断单元的判断结果为是时,判定所述SQL语句为SQL注入;
第二判断单元,用于在所述第一判断单元的判断结果为否时,继续判断所述SQL语句是否满足预设的主动防御检测条件;
第二判定单元,用于在所述第二判断单元的判断结果为是时,判定所述SQL语句为合法SQL语句;
第三判定单元,用于在所述第二判断单元的判断结果为否时,判定所述SQL语句为SQL注入。
10.如权利要求9所述的装置,其特征在于,所述第一判断单元,包括:
查找子单元,用于从所述SQL语句中依次查找每一个SQL注入特征值;
第一确定子单元,用于根据查找到的每一个SQL注入特征值对应的权值,确定所述SQL语句中包含的各SQL注入特征值对应的权值之和;
第一判断子单元,用于判断各SQL注入特征值对应的权值之和是否超过预设阈值;
第二确定子单元,用于在所述第一判断子单元的判断结果为是时,确定所述SQL语句满足预设的被动防御检测条件;
第三确定子单元,用于在所述第一判断子单元的判断结果为否时,确定所述SQL语句不满足预设的被动防御检测条件。
11.如权利要求9所述的装置,其特征在于,所述第二判断单元,包括:
获得子单元,用于获得所述SQL语句中的指定参数;
第四确定子单元,用于针对获得的每一个指定参数,确定该指定参数对应的第一参数类型;
第五确定子单元,用于在所述第一参数类型与预先存储的、该指定参数对应的第二参数类型匹配时,确定所述SQL语句满足预设的主动防御检测条件;
第六确定子单元,用于在所述第一参数类型与预先存储的、该指定参数对应的第二参数类型不匹配时,确定所述SQL语句不满足预设的主动防御检测条件。
12.如权利要求9所述的装置,其特征在于,还包括:
获得单元,用于获得执行所述SQL语句后的返回信息;
过滤单元,用于确定所述返回信息存在于预先存储的返回信息列表中时,过滤所述返回信息。
13.如权利要求9所述的装置,其特征在于,还包括:
触发单元,用于在判定所述SQL语句为SQL注入之后,触发报警操作;
拦截单元,用于在判定所述SQL语句为SQL注入之后,拦截所述SQL语句。
14.如权利要求9所述的装置,其特征在于,还包括:
预处理单元,用于在提取用户提交的SQL语句中包含的至少一个SQL注入特征值之前,按照预设标准对所述SQL语句进行预处理。
15.如权利要求9所述的装置,其特征在于,还包括:
提取单元,用于提取指定数量个用户提交的SQL语句中包含的所述指定参数;
第二确定单元,用于针对提取出的每一个所述指定参数,确定该指定参数对应的参数类型;
统计单元,用于针对每一参数类型,分别统计该参数类型对应的数量;
第三确定单元,用于将数量最多的参数类型确定为所述指定参数对应的第二参数类型。
16.如权利要求9所述的装置,其特征在于,还包括:
第四确定单元,用于针对任一SQL注入特征值,确定该SQL注入特征值对应的特征值类别;
第五确定单元,用于确定所述特征值类别对应的权值为该SQL注入特征值对应的权值。
17.一种服务器,其特征在于,包括权利要求9~16任一权利要求所述的装置。
CN201210016445.XA 2012-01-18 2012-01-18 一种sql注入检测方法及装置 Active CN102567546B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210016445.XA CN102567546B (zh) 2012-01-18 2012-01-18 一种sql注入检测方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210016445.XA CN102567546B (zh) 2012-01-18 2012-01-18 一种sql注入检测方法及装置

Publications (2)

Publication Number Publication Date
CN102567546A true CN102567546A (zh) 2012-07-11
CN102567546B CN102567546B (zh) 2014-03-12

Family

ID=46412944

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210016445.XA Active CN102567546B (zh) 2012-01-18 2012-01-18 一种sql注入检测方法及装置

Country Status (1)

Country Link
CN (1) CN102567546B (zh)

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102915344A (zh) * 2012-09-25 2013-02-06 新浪网技术(中国)有限公司 一种sql语句处理方法及装置
CN102915376A (zh) * 2012-11-13 2013-02-06 北京神州绿盟信息安全科技股份有限公司 检测数据库异常行为的方法和设备
CN105119783A (zh) * 2015-09-30 2015-12-02 北京奇艺世纪科技有限公司 网络请求数据的检测方法及装置
CN105160252A (zh) * 2015-08-10 2015-12-16 北京神州绿盟信息安全科技股份有限公司 一种结构化查询语言注入攻击的检测方法及装置
CN106845237A (zh) * 2017-01-23 2017-06-13 北京安华金和科技有限公司 一种基于sql语句的sql注入风险评估方法
CN107358098A (zh) * 2017-07-14 2017-11-17 北京安数云信息技术有限公司 基于插件的结构化查询语言sql注入检测方法和装置
CN107682315A (zh) * 2017-09-05 2018-02-09 杭州迪普科技股份有限公司 一种sql注入攻击检测模式设置方法及装置
CN108521392A (zh) * 2018-01-25 2018-09-11 华东师范大学 一种双向流量的sql注入攻击检测方法
CN109688137A (zh) * 2018-12-27 2019-04-26 深信服科技股份有限公司 一种sql注入攻击的检测方法、系统及相关组件
CN111767577A (zh) * 2020-07-07 2020-10-13 杭州安恒信息技术股份有限公司 Sql注入风险的检测方法、装置、电子装置和存储介质
US11562095B2 (en) 2021-01-28 2023-01-24 International Business Machines Corporation Reinforcing SQL transactions dynamically to prevent injection attacks

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7185232B1 (en) * 2001-02-28 2007-02-27 Cenzic, Inc. Fault injection methods and apparatus
CN101312393A (zh) * 2007-05-24 2008-11-26 北京启明星辰信息技术有限公司 一种sql注入漏洞检测方法及系统

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7185232B1 (en) * 2001-02-28 2007-02-27 Cenzic, Inc. Fault injection methods and apparatus
CN101312393A (zh) * 2007-05-24 2008-11-26 北京启明星辰信息技术有限公司 一种sql注入漏洞检测方法及系统

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102915344A (zh) * 2012-09-25 2013-02-06 新浪网技术(中国)有限公司 一种sql语句处理方法及装置
CN102915376A (zh) * 2012-11-13 2013-02-06 北京神州绿盟信息安全科技股份有限公司 检测数据库异常行为的方法和设备
CN105160252B (zh) * 2015-08-10 2017-12-19 北京神州绿盟信息安全科技股份有限公司 一种结构化查询语言注入攻击的检测方法及装置
CN105160252A (zh) * 2015-08-10 2015-12-16 北京神州绿盟信息安全科技股份有限公司 一种结构化查询语言注入攻击的检测方法及装置
CN105119783A (zh) * 2015-09-30 2015-12-02 北京奇艺世纪科技有限公司 网络请求数据的检测方法及装置
CN105119783B (zh) * 2015-09-30 2020-01-31 北京奇艺世纪科技有限公司 网络请求数据的检测方法及装置
CN106845237A (zh) * 2017-01-23 2017-06-13 北京安华金和科技有限公司 一种基于sql语句的sql注入风险评估方法
CN107358098A (zh) * 2017-07-14 2017-11-17 北京安数云信息技术有限公司 基于插件的结构化查询语言sql注入检测方法和装置
CN107682315A (zh) * 2017-09-05 2018-02-09 杭州迪普科技股份有限公司 一种sql注入攻击检测模式设置方法及装置
CN108521392A (zh) * 2018-01-25 2018-09-11 华东师范大学 一种双向流量的sql注入攻击检测方法
CN109688137A (zh) * 2018-12-27 2019-04-26 深信服科技股份有限公司 一种sql注入攻击的检测方法、系统及相关组件
CN111767577A (zh) * 2020-07-07 2020-10-13 杭州安恒信息技术股份有限公司 Sql注入风险的检测方法、装置、电子装置和存储介质
US11562095B2 (en) 2021-01-28 2023-01-24 International Business Machines Corporation Reinforcing SQL transactions dynamically to prevent injection attacks

Also Published As

Publication number Publication date
CN102567546B (zh) 2014-03-12

Similar Documents

Publication Publication Date Title
CN102567546B (zh) 一种sql注入检测方法及装置
CN110233849B (zh) 网络安全态势分析的方法及系统
CN106357696B (zh) 一种sql注入攻击检测方法及系统
CN110602029B (zh) 一种用于识别网络攻击的方法和系统
CN109474640B (zh) 恶意爬虫检测方法、装置、电子设备及存储介质
CN109768992B (zh) 网页恶意扫描处理方法及装置、终端设备、可读存储介质
CN105491053A (zh) 一种Web恶意代码检测方法及系统
CN104994091B (zh) 异常流量的检测方法及装置、防御Web攻击的方法和装置
CN102045319B (zh) Sql注入攻击检测方法及其装置
CN108924118B (zh) 一种撞库行为检测方法及系统
KR100894331B1 (ko) 웹 로그 상호연관분석을 이용한 웹 애플리케이션 공격의침입 탐지 시스템 및 방법
EP3371953B1 (en) System and methods for detecting domain generation algorithm (dga) malware
CN103685294A (zh) 拒绝服务攻击的攻击源的识别方法和装置
CN104967628A (zh) 一种保护web应用安全的诱骗方法
CN104901975A (zh) 网站日志安全分析方法、装置及网关
CN103279710A (zh) Internet信息系统恶意代码的检测方法和系统
CN103139138A (zh) 一种基于客户端检测的应用层拒绝服务防护方法及系统
CN113190839A (zh) 一种基于SQL注入的web攻击防护方法及系统
CN106250761B (zh) 一种识别web自动化工具的设备、装置及方法
CN104954188A (zh) 基于云的网站日志安全分析方法、装置和系统
CN110135162A (zh) Webshell后门识别方法、装置、设备及存储介质
JP2011193343A (ja) 通信ネットワーク監視システム
CN105959294A (zh) 一种恶意域名鉴别方法及装置
CN111131166B (zh) 一种用户行为预判方法及相关设备
CN102917053A (zh) 一种用于判断网页网址重写的方法、设备和系统

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: NSFOCUS TECHNOLOGY CO., LTD.

Effective date: 20140625

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20140625

Address after: 100089 Beijing city Haidian District Road No. 4 North wa Yitai three storey building

Patentee after: NSFOCUS INFORMATION TECHNOLOGY Co.,Ltd.

Patentee after: NSFOCUS TECHNOLOGIES Inc.

Address before: 100089 Beijing city Haidian District Road No. 4 North wa Yitai three storey building

Patentee before: NSFOCUS INFORMATION TECHNOLOGY Co.,Ltd.

CP01 Change in the name or title of a patent holder

Address after: 100089 Beijing city Haidian District Road No. 4 North wa Yitai three storey building

Patentee after: NSFOCUS Technologies Group Co.,Ltd.

Patentee after: NSFOCUS TECHNOLOGIES Inc.

Address before: 100089 Beijing city Haidian District Road No. 4 North wa Yitai three storey building

Patentee before: NSFOCUS INFORMATION TECHNOLOGY Co.,Ltd.

Patentee before: NSFOCUS TECHNOLOGIES Inc.

CP01 Change in the name or title of a patent holder