CN103744802A - Sql注入攻击的识别方法及装置 - Google Patents

Sql注入攻击的识别方法及装置 Download PDF

Info

Publication number
CN103744802A
CN103744802A CN201310714559.6A CN201310714559A CN103744802A CN 103744802 A CN103744802 A CN 103744802A CN 201310714559 A CN201310714559 A CN 201310714559A CN 103744802 A CN103744802 A CN 103744802A
Authority
CN
China
Prior art keywords
sql
field
target data
feature database
rule
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
CN201310714559.6A
Other languages
English (en)
Other versions
CN103744802B (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.)
Qianxin Technology Group Co Ltd
Original Assignee
Beijing Qihoo Technology Co Ltd
Qizhi Software Beijing 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 Qihoo Technology Co Ltd, Qizhi Software Beijing Co Ltd filed Critical Beijing Qihoo Technology Co Ltd
Priority to CN201310714559.6A priority Critical patent/CN103744802B/zh
Publication of CN103744802A publication Critical patent/CN103744802A/zh
Application granted granted Critical
Publication of CN103744802B publication Critical patent/CN103744802B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种SQL注入攻击的识别方法及装置。其中的方法包括:基于SQL词法语法分析,建立基于SQL语法元素及SQL语法字段的SQL注入特征库;获取目标数据,对所述目标数据进行SQL词法语法分析,获取所述目标数据中包含的所有SQL语法元素及SQL语法字段;将所获取的所述目标数据中包含的所有SQL语法元素及SQL语法字段与所述SQL注入特征库进行匹配,如果匹配成功,则确定存在SQL注入攻击。通过本发明,可提高识别SQL注入的效率、减少误报和漏报。

Description

SQL注入攻击的识别方法及装置
技术领域
本发明涉及网络安全技术领域,具体涉及一种SQL注入攻击的识别方法及装置。
背景技术
所谓SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。
当应用程序使用输入内容来构造动态SQL语句以访问数据库时,会发生SQL注入攻击。如果代码使用存储过程,而这些存储过程作为包含未筛选的用户输入的字符串来传递,也会发生SQL注入。SQL注入可能导致攻击者使用应用程序登陆在数据库中执行命令。如果应用程序使用特权过高的帐户连接到数据库,这种问题会变得很严重。在某些表单中,用户输入的内容直接用来构造(或者影响)动态SQL命令,或者作为存储过程的输入参数,这些表单特别容易受到SQL注入的攻击。而许多网站程序在编写时,没有对用户输入的合法性进行判断或者程序中本身的变量处理不当,使应用程序存在安全隐患。这样,用户就可以提交一段数据库查询的代码,根据程序返回的结果,获得一些敏感的信息或者控制整个服务器,于是SQL注入就发生了。
现有SQL注入攻击的一种识别方案是基于正则表示进行的。基于正则表达式的SQL注入攻击识别方案的一般步骤为:构造SQL的注入关键字符;构造正则表达式;判断是否有SQL注入字符。正则表达式是基于字符的逻辑过滤,检测效率低。为了提高效率,一般不可能对所有字符进行匹配,而仅对特定范围的数据(例如仅检测前20个字符),这样会导致漏报。另外,有一种情况,如果用户自己编写了关于SQL语句的数据,实际这种情况仅是技术探讨并不会存在SQL注入攻击,目前识别方案对于用户自己发送的包含SQL语句的数据没有特殊处理方式,会发生误报。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的SQL注入攻击的识别方法及装置。
依据本发明的一个方面,提供一种SQL注入攻击的识别方法,包括:基于SQL词法语法分析,建立基于SQL语法元素及SQL语法字段的SQL注入特征库;获取目标数据,对所述目标数据进行SQL词法语法分析,获取所述目标数据中包含的所有SQL语法元素及SQL语法字段;将所获取的所述目标数据中包含的所有SQL语法元素及SQL语法字段与所述SQL注入特征库进行匹配,如果匹配成功,则确定存在SQL注入攻击。
优选地,所述目标数据是指http协议的post消息,所述方法还包括:为所述SQL注入特征库中针对所述post消息的每一条规则设置权重;当所述post消息中包含的SQL语法元素及SQL语法字段与所述SQL注入特征库中的规则匹配成功,且所匹配规则的权重等于或高于权重阈值时,确定存在SQL注入攻击。
优选地,所述SQL注入特征库所包含的规则是由SQL语法元素及SQL语法字段构成的关键字组成的。
优选地,所述目标数据为http协议的get消息、cookie、refer字段或X-Forward-For字段,所述SQL注入特征库所包含的规则是基于SQL语法元素及SQL语法字段的正则表达式。
优选地,所述SQL语法元素包括标识符、数据类型、函数、表达式、运算符、注释、保留关键字。
优选地,所述SQL语法字段包括字段、命令、表名、条件。
依据本发明的另一个方面,还提供一种SQL注入攻击的识别装置,包括:SQL注入特征库建立单元,用于基于SQL词法语法分析,建立基于SQL语法元素及SQL语法字段的SQL注入特征库;SQL语句分析单元,用于针对目标数据,对所述目标数据进行SQL词法语法分析,获取所述目标数据中包含的所有SQL语法元素及SQL语法字段;匹配单元,用于将所获取的所述目标数据中包含的所有SQL语法元素及SQL语法字段与所述SQL注入特征库进行匹配,如果匹配成功,则确定存在SQL注入攻击。
优选地,所述目标数据是指http协议的post消息,所述装置还包括:权重设置单元,用于为所述SQL注入特征库中针对所述post消息的每一条规则设置权重;判断单元,用于当所述post消息中包含的SQL语法元素及SQL语法字段与所述SQL注入特征库中的规则匹配成功,且所匹配规则的权重等于或高于权重阈值时,确定存在SQL注入攻击。
优选地,所述SQL注入特征库所包含的规则是由SQL语法元素及SQL语法字段构成的关键字组成的。
优选地,所述目标数据为http协议的get消息、cookie、refer字段或X-Forward-For字段,所述SQL注入特征库所包含的规则是基于SQL语法元素及SQL语法字段的正则表达式。
优选地,所述SQL语法元素包括标识符、数据类型、函数、表达式、运算符、注释、保留关键字。
优选地,所述SQL语法字段包括字段、命令、表名、条件。
可见,本发明目的是提高识别SQL注入的效率、减少误报和漏报。具体方式是,对请求进行SQL词法语义分析,得到SQL语法元素及SQL语法字段,再将这些SQL语句解析结果与特征库进行模式匹配。由于不是对数据进行字符比对,而是针对特定的SQL语句解析结果进行有针对性的比对,因此提高了效率。此外,对数据所包含的所有SQL语句都进行了分析提取,从而可尽量减少漏报。此外,针对http的post请求,特别建立了由统计得到的SQL语句构成的特征库,并给每个条post相关的特征赋予权重值,对于post请求,将解析的SQL语句与自定义特征库进行比对,即使匹配,如果权重值较低,则认为不是SQL注入攻击。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了根据本发明一个实施例的SQL注入攻击的识别方法流程图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
参见图1,为本发明实施例提供的SQL注入攻击的识别方法流程图。该方法主要包括以下步骤。
S101:基于SQL词法语法分析,建立基于SQL语法元素及SQL语法字段的SQL注入特征库;
(1)词法分析
经过词法分析,可得到如下的SQL语法元素:
●标识符:诸如表、视图、列、数据库和服务器等对象的名称。
●数据类型:定义数据对象(如列、变量和参数)所包含的数据类型。大多数Transact-SQL语句并不显式引用数据类型,但是其结果由于语句中所引用的对象数据类型间的互相作用而受到影响。
●函数:语法元素,它可以有零个、一个或多个输入值,并返回一个标量值或表格形式的值的集合。函数示例包括将多个值相加的SUM函数、确定两个日期之间相差多少个时间单位的DATEDIFF函数、获取
Figure BDA0000443224460000041
SQL ServerTM实例名称的SERVERNAME函数或在远程服务器上执行Transact-SQL语句和检索结果集的OPENQUERY函数。
●表达式:是Microsoft SQL Server可解析为单个值的语法单元。表达式的示例包括常量、返回单值的函数、列或变量的引用。
●运算符:与一个或多个简单表达式一起使用构造一个更为复杂的表达式。例如,将"-"(负号)运算符和常量12组合在一起得到常量-12。
●表达式:PriceColumn*1.1中的"*"(乘号)运算符使价格提高百分之十。
●注释:插入到Transact-SQL语句或脚本中解释语句作用的文本。SQL Server不执行注释。
●保留关键字:保留下来由SQL Server使用的词。数据库中的对象名不应使用这些字词。
(2)语法分析
经过语法分析,可得到如下SQL语法字段:
●字段:例如添加字段、修改字段、删除字段、查询字段等。
●命令:常用SQL命令非常多,例如,
(1)创建数据库命令:CREATE DATABASE database-name;
(2)删除数据库命令:drop database dbname;
(3)备份sql server:
创建备份数据:
device USE masterEXEC sp_addumpdevice'disk','testBack','c:mssql7backupMyNwind_1.da
开始备份:BACKUP DATABASE pubs TO testBack;
(4)创建新表:
create table tabname(col1type1[not null][primary key],col2type2[not null],..);
(5)删除新表:drop table tabname;等等。
●表名:数据表的名称。
●条件:命令执行的条件。
上述步骤101是预先准备步骤。由于SQL语句不可能穷尽,因此对SQL语句的学习也不可能穷尽。为了后续匹配的准确性,SQL注入特征库的学习样本越多越好,并且优选可以定时更新,这样构建的SQL注入特征库足够丰富,且能应对最新的SQL注入变型。其中,SQL注入特征库是由多条SQL注入规则构成的,其中每条SQL注入规则都是基于学习的SQL语法元素及SQL语法字段设置的。
S102:获取目标数据,对目标数据进行SQL词法语法分析,获取目标数据中包含的所有SQL语法元素及SQL语法字段;
其中,目标数据可以是指http协议的get消息或post消息,本领域技术人员了解,Http连接包括GET请求和POST请求。创建的步骤分别是:1、创建HttpGet(或HttpPost)对象,将要请求的URL通过构造方法传入HttpGet(或HttpPost)对象中;2、使用DefaultHttpClient类的execute方法发送HTTP GET或HTTP POST请求,并返回HttpResponse对象;3、通过HttpResponse接口的getEntity方法返回响应信息。除了get消息或post消息,另外目标数据还可以是指通过cookie方式获取的数据,此外,还可能是指http协议消息的字段,例如http协议消息的refer字段或X-Forwarded-For字段。其中,X-Forwarded-For是http协议自带的字段,X-Forwarded-For机制是通过一层代理后记录一个IP。
S103:将所获取的目标数据中包含的所有SQL语法元素及SQL语法字段与所述SQL注入特征库进行匹配,如果匹配成功,则确定存在SQL注入攻击。
为了使本发明改进之处明显突出,下面对比介绍现有基于正则表达式的SQL注入攻击检测方案。
SQL注入攻击的基本原理,是从客户端合法接口提交特殊的非法代码,让其注入到服务器端执行业务的SQL中去,进而改变SQL语句的原有逻辑和影响服务器端正常业务的处理。SQL注入是从正常的WWW端口访问,而且表面看起来跟一般的Web页面访问没什么区别,所以市面的防火墙都不会对SQL注入发出警报,如果管理员没查看IIS日志的习惯,可能被入侵很长时间都不会发觉。但是,SQL注入的手法相当灵活,在注入的时候会碰到很多意外的情况,需要构造巧妙的SQL语句,从而成功获取想要的数据。
一般来说,SQL注入一般存在于形如:HTTP://xxx.xxx.xxx/abc.asp?id=XX等带有参数的ASP(Active Server Page,动态服务器页面)中,有时一个动态网页中可能只有一个参数,有时可能有N个参数,有时是整型参数,有时是字符串型参数,不能一概而论。总之只要是带有参数的动态网页且此网页访问了数据库,那么就有可能存在SQL注入。如果ASP程序员没有安全意识,不进行必要的字符过滤,存在SQL注入的可能性就非常大。
以下以HTTP://xxx.xxx.xxx/abc.asp?p=YY为例进行分析,YY可能是整型,也有可能是字符串。
(1)整型参数的判断
当输入的参数YY为整型时,通常abc.asp中SQL语句原貌大致如下:
select*from表名where字段=YY,
(2)字符串型参数的判断
当输入的参数YY为字符串时,通常abc.asp中SQL语句原貌大致如下:
select*from表名where字段='YY',
(3)特殊情况的处理
有时ASP程序员会在程序员过滤掉单引号等字符,以防止SQL注入。
现有基于正则表达式的SQL注入检测的过程为:当拦截到http请求后首先对内容进行URL解码,防止攻击者以URL编码方式构造SQL注入语句;检测请求数据中是否含有SQL注入攻击常用的关键字以及分隔符,如“select”、“and”、“;”、“--”等,如果不含有,则可以排除注入攻击的可能,如果有,则提交至下一步进行详细的规则检测;对于包含注入关键字的web请求,则便利规则库对请求内容进行详细的正则匹配。如果匹配成功,则拦截请求,向客户端发送警告并记录日志,如果匹配失败,则将请求字符串记录入可疑的攻击代码库,提交网站管理员分析。本领域技术人员都理解,基于字符匹配的正则表达式检测方案效率低下,为了一定程度提高检测效率,常常在编写正则表达式规则时,会设置字符检测的偏移量,例如仅检测整个数据的某段(例如前50个字符),假如SQL注入语句恰好发生在未检测的字段,则会导致漏报。
针对现有检测的上述问题,本发明对待检测的数据(例如get消息、post消息或者http协议消息的字段)的所有字段都进行SQL词法语法分析,得到所有SQL语法元素及SQL语法字段,这样不会出现漏检的问题。而且,通过SQL词法语法分析,对得到的SQL语法元素及SQL语法字段进行后续匹配,比单纯的对整个数据进行字符匹配效率会提高很多。
特别地,为了减少用户自己提交包含SQL语句而引起的误报,本发明针对post请求消息的方式进行了特殊处理。具体地,为SQL注入特征库中针对所述post消息的每一条规则设置权重;当所述post消息中包含的SQL语法元素及SQL语法字段与SQL注入特征库中的规则匹配成功,且所匹配规则的权重等于或高于权重阈值时,确定存在SQL注入攻击。也就是,针对post消息,如果仅匹配规则成功但是所匹配规则的权重较低(权重越低,表明越安全),则不认为是一个SQL注入攻击。这样就可以避免上述用户自己发帖导致误导的情况。对于此种情况,SQL注入特征库所包含的规则是由SQL语法元素及SQL语法字段构成的关键字组成的,并且为每条规则设置权重,权重越高表明越危险(SQL注入攻击的可能性大),反之,权重越低表明越安全(SQL注入攻击的可能性小)。
除了上述post消息之外,对于其他目标数据的方式(例如get消息、cookie或者http协议消息的字段),SQL注入特征库所包含的规则仍可以采用正则表达式的方式,只是是基于SQL语法元素及SQL语法字段的正则表达式。
下面以两个具体例子对应用本发明进行SQL注入识别进行说明。
例子1(针对漏报)
对于用户提交的数据:
“Aaaaaaaaaaxxxxxxxxxxxbbbbbbbbbbbbcccc select money fromyour_package gsssssssssssssssssssss”
传统的检测由于性能的原因,不是对上面的整个字串进行匹配,而是截取例如前30个字符进行匹配,就会发现没有找到完整的SQL语句,从而导致漏报。
本发明采用的是,将上面的整体字串进行SQL词法语法分析,会得到如下相关数据:
命令:select;
查询字段:money;
数据表:your_package;
可见,SQL语句的所有相关结果已经全部解析到了,因此,不会出现漏报。
例子2(针对误报)
用户输入:
“Haaaaaaaaaaaaaaaaaaaaaaaaaaselectbbbbbbbbbbbbbbbbfromccccccyourpacket”
传统的检测:只会从数据中查找是否有“select”、“from”等关键字。
如上的数据里面有这些关键字,但是却不是一条SQL语句,那么就导致了误报。
通过本发明的SQL词法语法分析,那么上面的字符串不会被当成SQL语句,不符合SQL语句,因此也不会产生误报。
可见,本发明目的是提高识别SQL注入的效率、减少误报和漏报。具体方式是,对请求进行SQL词法语义分析,得到SQL语法元素及SQL语法字段,再将这些SQL语句解析结果与特征库进行模式匹配。由于不是对数据进行字符比对,而是针对特定的SQL语句解析结果进行有针对性的比对,因此提高了效率。此外,对数据所包含的所有SQL语句都进行了分析提取,从而可尽量减少漏报。此外,针对http的post请求,特别建立了由统计得到的SQL语句构成的特征库,并给每个条post相关的特征赋予权重值,对于post请求,将解析的SQL语句与自定义特征库进行比对,即使匹配,如果权重值较低,则认为不是SQL注入攻击。
与上述方法相对应,本放还提供一种SQL注入攻击的识别装置。该装置可以通过软件、硬件、软硬件结合的方式实现。具体地,该装置可以是指服务节点设备本身,也可以是指服务节点内部的功能实体,只要具备相应功能即可。
该装置包括:
SQL注入特征库建立单元,用于基于SQL词法语法分析,建立基于SQL语法元素及SQL语法字段的SQL注入特征库;
SQL语句分析单元,用于针对目标数据,对目标数据进行SQL词法语法分析,获取目标数据中包含的所有SQL语法元素及SQL语法字段;
匹配单元,用于将所获取的目标数据中包含的所有SQL语法元素及SQL语法字段与所述SQL注入特征库进行匹配,如果匹配成功,则确定存在SQL注入攻击。
可见,由于不是对数据进行字符比对,而是针对特定的SQL语句解析结果进行有针对性的比对,因此提高了效率。此外,对数据所包含的所有SQL语句都进行了分析提取,从而可尽量减少漏报。
特别地,为了尽可能减少误报,针对post消息的SQL注入识别进行了特殊处理。针对http的post请求,特别建立了由统计得到的SQL语句构成的特征库,并给每个条post相关的特征赋予权重值,对于post请求,将解析的SQL语句与自定义特征库进行比对,即使匹配,如果权重值较低,则认为不是SQL注入攻击。具体地,当目标数据是指http协议的post消息时,该装置还包括:
权重设置单元,用于为SQL注入特征库中针对post消息的每一条规则设置权重;
判断单元,用于当post消息中包含的SQL语法元素及SQL语法字段与所述SQL注入特征库中的规则匹配成功,且所匹配规则的权重等于或高于权重阈值时,确定存在SQL注入攻击。
对于此种针对post消息的改进方案中,SQL注入特征库所包含的规则是由SQL语法元素及SQL语法字段构成的关键字组成的。
此外,目标数据还可以是指http协议的get消息、cookie、refer字段或X-Forward-For字段,此种情况下,SQL注入特征库所包含的规则是基于SQL语法元素及SQL语法字段的正则表达式。
其中,SQL语法元素包括标识符、数据类型、函数、表达式、运算符、注释、保留关键字;SQL语法字段包括字段、命令、表名、条件。
在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的SQL注入攻击的识别装置中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
本发明公开了:A1、一种SQL注入攻击的识别方法,包括:
基于SQL词法语法分析,建立基于SQL语法元素及SQL语法字段的SQL注入特征库;
获取目标数据,对所述目标数据进行SQL词法语法分析,获取所述目标数据中包含的所有SQL语法元素及SQL语法字段;
将所获取的所述目标数据中包含的所有SQL语法元素及SQL语法字段与所述SQL注入特征库进行匹配,如果匹配成功,则确定存在SQL注入攻击。
A2、如A1所述的方法,所述目标数据是指http协议的post消息,所述方法还包括:
为所述SQL注入特征库中针对所述post消息的每一条规则设置权重;
当所述post消息中包含的SQL语法元素及SQL语法字段与所述SQL注入特征库中的规则匹配成功,且所匹配规则的权重等于或高于权重阈值时,确定存在SQL注入攻击。
A3、如A2所述的方法,所述SQL注入特征库所包含的规则是由SQL语法元素及SQL语法字段构成的关键字组成的。
A4、如A1所述的方法,所述目标数据为http协议的get消息、cookie、refer字段或X-Forward-For字段,所述SQL注入特征库所包含的规则是基于SQL语法元素及SQL语法字段的正则表达式。
A5、如A1至A4任一项所述方法,所述SQL语法元素包括标识符、数据类型、函数、表达式、运算符、注释、保留关键字。
A6、如A1至A4任一项所述方法,所述SQL语法字段包括字段、命令、表名、条件。
B7、一种SQL注入攻击的识别装置,包括:
SQL注入特征库建立单元,用于基于SQL词法语法分析,建立基于SQL语法元素及SQL语法字段的SQL注入特征库;
SQL语句分析单元,用于针对目标数据,对所述目标数据进行SQL词法语法分析,获取所述目标数据中包含的所有SQL语法元素及SQL语法字段;
匹配单元,用于将所获取的所述目标数据中包含的所有SQL语法元素及SQL语法字段与所述SQL注入特征库进行匹配,如果匹配成功,则确定存在SQL注入攻击。
B8、如B7所述的装置,所述目标数据是指http协议的post消息,所述装置还包括:
权重设置单元,用于为所述SQL注入特征库中针对所述post消息的每一条规则设置权重;
判断单元,用于当所述post消息中包含的SQL语法元素及SQL语法字段与所述SQL注入特征库中的规则匹配成功,且所匹配规则的权重等于或高于权重阈值时,确定存在SQL注入攻击。
B9、如权利要求8所述的装置,所述SQL注入特征库所包含的规则是由SQL语法元素及SQL语法字段构成的关键字组成的。
B10、如B7所述的装置,所述目标数据为http协议的get消息、cookie、refer字段或X-Forward-For字段,所述SQL注入特征库所包含的规则是基于SQL语法元素及SQL语法字段的正则表达式。
B11、如B7至B10任一项所述装置,所述SQL语法元素包括标识符、数据类型、函数、表达式、运算符、注释、保留关键字。
B12、如B7至B10任一项所述装置,所述SQL语法字段包括字段、命令、表名、条件。

Claims (10)

1.一种SQL注入攻击的识别方法,其特征在于,包括:
基于SQL词法语法分析,建立基于SQL语法元素及SQL语法字段的SQL注入特征库;
获取目标数据,对所述目标数据进行SQL词法语法分析,获取所述目标数据中包含的所有SQL语法元素及SQL语法字段;
将所获取的所述目标数据中包含的所有SQL语法元素及SQL语法字段与所述SQL注入特征库进行匹配,如果匹配成功,则确定存在SQL注入攻击。
2.如权利要求1所述的方法,其特征在于,所述目标数据是指http协议的post消息,所述方法还包括:
为所述SQL注入特征库中针对所述post消息的每一条规则设置权重;
当所述post消息中包含的SQL语法元素及SQL语法字段与所述SQL注入特征库中的规则匹配成功,且所匹配规则的权重等于或高于权重阈值时,确定存在SQL注入攻击。
3.如权利要求2所述的方法,其特征在于,所述SQL注入特征库所包含的规则是由SQL语法元素及SQL语法字段构成的关键字组成的。
4.如权利要求1所述的方法,其特征在于,所述目标数据为http协议的get消息、cookie、refer字段或X-Forward-For字段,所述SQL注入特征库所包含的规则是基于SQL语法元素及SQL语法字段的正则表达式。
5.如权利要求1至4任一项所述方法,其特征在于,所述SQL语法元素包括标识符、数据类型、函数、表达式、运算符、注释、保留关键字。
6.如权利要求1至4任一项所述方法,其特征在于,所述SQL语法字段包括字段、命令、表名、条件。
7.一种SQL注入攻击的识别装置,其特征在于,包括:
SQL注入特征库建立单元,用于基于SQL词法语法分析,建立基于SQL语法元素及SQL语法字段的SQL注入特征库;
SQL语句分析单元,用于针对目标数据,对所述目标数据进行SQL词法语法分析,获取所述目标数据中包含的所有SQL语法元素及SQL语法字段;
匹配单元,用于将所获取的所述目标数据中包含的所有SQL语法元素及SQL语法字段与所述SQL注入特征库进行匹配,如果匹配成功,则确定存在SQL注入攻击。
8.如权利要求7所述的装置,其特征在于,所述目标数据是指http协议的post消息,所述装置还包括:
权重设置单元,用于为所述SQL注入特征库中针对所述post消息的每一条规则设置权重;
判断单元,用于当所述post消息中包含的SQL语法元素及SQL语法字段与所述SQL注入特征库中的规则匹配成功,且所匹配规则的权重等于或高于权重阈值时,确定存在SQL注入攻击。
9.如权利要求8所述的装置,其特征在于,所述SQL注入特征库所包含的规则是由SQL语法元素及SQL语法字段构成的关键字组成的。
10.如权利要求7所述的装置,其特征在于,所述目标数据为http协议的get消息、cookie、refer字段或X-Forward-For字段,所述SQL注入特征库所包含的规则是基于SQL语法元素及SQL语法字段的正则表达式。
CN201310714559.6A 2013-12-20 2013-12-20 Sql注入攻击的识别方法及装置 Active CN103744802B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310714559.6A CN103744802B (zh) 2013-12-20 2013-12-20 Sql注入攻击的识别方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310714559.6A CN103744802B (zh) 2013-12-20 2013-12-20 Sql注入攻击的识别方法及装置

Publications (2)

Publication Number Publication Date
CN103744802A true CN103744802A (zh) 2014-04-23
CN103744802B CN103744802B (zh) 2017-05-24

Family

ID=50501820

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310714559.6A Active CN103744802B (zh) 2013-12-20 2013-12-20 Sql注入攻击的识别方法及装置

Country Status (1)

Country Link
CN (1) CN103744802B (zh)

Cited By (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104881284A (zh) * 2015-05-22 2015-09-02 国云科技股份有限公司 一种高效的日志操作方法
CN105160252A (zh) * 2015-08-10 2015-12-16 北京神州绿盟信息安全科技股份有限公司 一种结构化查询语言注入攻击的检测方法及装置
CN105488399A (zh) * 2014-12-08 2016-04-13 哈尔滨安天科技股份有限公司 一种基于程序关键字调用序列的脚本病毒检测方法及系统
CN105959324A (zh) * 2016-07-15 2016-09-21 江苏博智软件科技有限公司 基于正则匹配的网络攻击检测方法及装置
CN106156623A (zh) * 2016-07-29 2016-11-23 江西师范大学 基于意图的sqlia防御方法
CN106341376A (zh) * 2015-07-15 2017-01-18 广州市动景计算机科技有限公司 网络攻击判断方法、安全的网络数据传输方法及相应装置
CN106355094A (zh) * 2016-07-08 2017-01-25 耿童童 一种基于语法变换的sql注入攻击防御系统及防御方法
CN106446677A (zh) * 2016-09-21 2017-02-22 中科信息安全共性技术国家工程研究中心有限公司 一种XPath注入漏洞检测及防御系统及方法
CN106940778A (zh) * 2017-03-10 2017-07-11 华东师范大学 一种基于gpu并行字典破解托库中的加密数据方法
CN107292170A (zh) * 2016-04-05 2017-10-24 阿里巴巴集团控股有限公司 Sql注入攻击的检测方法及装置、系统
CN107358098A (zh) * 2017-07-14 2017-11-17 北京安数云信息技术有限公司 基于插件的结构化查询语言sql注入检测方法和装置
CN107368582A (zh) * 2017-07-21 2017-11-21 深信服科技股份有限公司 一种sql语句检测方法及系统
CN107483510A (zh) * 2017-10-09 2017-12-15 杭州安恒信息技术有限公司 一种提高Web应用层攻击检测准确率的方法及装置
CN108573152A (zh) * 2017-03-14 2018-09-25 北京京东尚科信息技术有限公司 检测sql注入攻击的方法、装置、服务器和存储介质
CN108959926A (zh) * 2018-06-27 2018-12-07 杭州安恒信息技术股份有限公司 一种sql注入攻击的检测方法
CN109542756A (zh) * 2018-09-29 2019-03-29 中国平安人寿保险股份有限公司 自动化配置脚本的方法、装置、电子设备及存储介质
CN109992986A (zh) * 2017-12-29 2019-07-09 中国移动通信集团上海有限公司 一种敏感数据的脱敏处理方法及装置
CN110427754A (zh) * 2019-08-12 2019-11-08 腾讯科技(深圳)有限公司 网络应用攻击检测方法、装置、设备及存储介质
TWI681347B (zh) * 2017-12-26 2020-01-01 人因設計所股份有限公司 關鍵字示警系統之方法
US10574673B2 (en) 2015-07-15 2020-02-25 Guangzhou Ucweb Computer Technology Co., Ltd. Network attack determination method, secure network data transmission method, and corresponding apparatus
CN111984970A (zh) * 2019-05-22 2020-11-24 深信服科技股份有限公司 一种sql注入检测方法、系统及电子设备和存储介质
CN112115466A (zh) * 2020-08-26 2020-12-22 广州锦行网络科技有限公司 一种绕过select关键字的sql注入方法
CN112202822A (zh) * 2020-12-07 2021-01-08 中国人民解放军国防科技大学 数据库注入检测方法、装置、电子设备及存储介质
CN112749186A (zh) * 2021-01-22 2021-05-04 广州虎牙科技有限公司 数据处理方法、装置、电子设备和计算机可读存储介质
CN112822187A (zh) * 2020-12-31 2021-05-18 山石网科通信技术股份有限公司 网络攻击的检测方法及装置
CN112948419A (zh) * 2021-03-02 2021-06-11 广州海量数据库技术有限公司 查询语句处理方法及装置
CN113158188A (zh) * 2021-03-26 2021-07-23 杭州数梦工场科技有限公司 检测sql注入攻击的方法及装置、电子设备
CN113821791A (zh) * 2020-06-18 2021-12-21 中国电信股份有限公司 用于检测sql注入的方法、系统、存储介质及装置
CN114896269A (zh) * 2022-05-31 2022-08-12 北京达佳互联信息技术有限公司 结构化查询语句检测方法、装置、电子设备及存储介质
CN115174201A (zh) * 2022-06-30 2022-10-11 北京安博通科技股份有限公司 一种基于筛选标签的安全规则管理方法及装置
US11562095B2 (en) 2021-01-28 2023-01-24 International Business Machines Corporation Reinforcing SQL transactions dynamically to prevent injection attacks

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060212438A1 (en) * 2005-03-16 2006-09-21 Ming Sum Sam Ng SQL injection protection by variable normalization
CN101267357A (zh) * 2007-03-13 2008-09-17 北京启明星辰信息技术有限公司 一种sql注入攻击检测方法及系统
CN101448007A (zh) * 2008-12-31 2009-06-03 中国电力科学研究院 一种结构化查询语言sql攻击防御系统
CN101477544A (zh) * 2009-01-12 2009-07-08 腾讯科技(深圳)有限公司 一种识别垃圾文本的方法和系统
CN101609493A (zh) * 2009-07-21 2009-12-23 国网电力科学研究院 一种基于自学习的数据库sql注入防护方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060212438A1 (en) * 2005-03-16 2006-09-21 Ming Sum Sam Ng SQL injection protection by variable normalization
CN101267357A (zh) * 2007-03-13 2008-09-17 北京启明星辰信息技术有限公司 一种sql注入攻击检测方法及系统
CN101448007A (zh) * 2008-12-31 2009-06-03 中国电力科学研究院 一种结构化查询语言sql攻击防御系统
CN101477544A (zh) * 2009-01-12 2009-07-08 腾讯科技(深圳)有限公司 一种识别垃圾文本的方法和系统
CN101609493A (zh) * 2009-07-21 2009-12-23 国网电力科学研究院 一种基于自学习的数据库sql注入防护方法

Cited By (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105488399A (zh) * 2014-12-08 2016-04-13 哈尔滨安天科技股份有限公司 一种基于程序关键字调用序列的脚本病毒检测方法及系统
CN104881284A (zh) * 2015-05-22 2015-09-02 国云科技股份有限公司 一种高效的日志操作方法
US10574673B2 (en) 2015-07-15 2020-02-25 Guangzhou Ucweb Computer Technology Co., Ltd. Network attack determination method, secure network data transmission method, and corresponding apparatus
CN106341376A (zh) * 2015-07-15 2017-01-18 广州市动景计算机科技有限公司 网络攻击判断方法、安全的网络数据传输方法及相应装置
US11277418B2 (en) 2015-07-15 2022-03-15 Alibaba Group Holding Limited Network attack determination method, secure network data transmission method, and corresponding apparatus
CN105160252A (zh) * 2015-08-10 2015-12-16 北京神州绿盟信息安全科技股份有限公司 一种结构化查询语言注入攻击的检测方法及装置
CN105160252B (zh) * 2015-08-10 2017-12-19 北京神州绿盟信息安全科技股份有限公司 一种结构化查询语言注入攻击的检测方法及装置
CN107292170A (zh) * 2016-04-05 2017-10-24 阿里巴巴集团控股有限公司 Sql注入攻击的检测方法及装置、系统
CN106355094B (zh) * 2016-07-08 2019-02-22 北京卫达信息技术有限公司 一种基于语法变换的sql注入攻击防御系统及防御方法
CN106355094A (zh) * 2016-07-08 2017-01-25 耿童童 一种基于语法变换的sql注入攻击防御系统及防御方法
CN105959324A (zh) * 2016-07-15 2016-09-21 江苏博智软件科技有限公司 基于正则匹配的网络攻击检测方法及装置
CN106156623A (zh) * 2016-07-29 2016-11-23 江西师范大学 基于意图的sqlia防御方法
CN106156623B (zh) * 2016-07-29 2018-10-30 江西师范大学 基于意图的sqlia防御方法
CN106446677A (zh) * 2016-09-21 2017-02-22 中科信息安全共性技术国家工程研究中心有限公司 一种XPath注入漏洞检测及防御系统及方法
CN106940778B (zh) * 2017-03-10 2020-10-16 华东师范大学 一种基于gpu并行字典破解托库中的加密数据方法
CN106940778A (zh) * 2017-03-10 2017-07-11 华东师范大学 一种基于gpu并行字典破解托库中的加密数据方法
CN108573152A (zh) * 2017-03-14 2018-09-25 北京京东尚科信息技术有限公司 检测sql注入攻击的方法、装置、服务器和存储介质
CN107358098A (zh) * 2017-07-14 2017-11-17 北京安数云信息技术有限公司 基于插件的结构化查询语言sql注入检测方法和装置
CN107368582A (zh) * 2017-07-21 2017-11-21 深信服科技股份有限公司 一种sql语句检测方法及系统
CN107368582B (zh) * 2017-07-21 2020-12-22 深信服科技股份有限公司 一种sql语句检测方法及系统
CN107483510A (zh) * 2017-10-09 2017-12-15 杭州安恒信息技术有限公司 一种提高Web应用层攻击检测准确率的方法及装置
CN107483510B (zh) * 2017-10-09 2020-11-24 杭州安恒信息技术股份有限公司 一种提高Web应用层攻击检测准确率的方法及装置
TWI681347B (zh) * 2017-12-26 2020-01-01 人因設計所股份有限公司 關鍵字示警系統之方法
CN109992986A (zh) * 2017-12-29 2019-07-09 中国移动通信集团上海有限公司 一种敏感数据的脱敏处理方法及装置
CN108959926A (zh) * 2018-06-27 2018-12-07 杭州安恒信息技术股份有限公司 一种sql注入攻击的检测方法
CN109542756A (zh) * 2018-09-29 2019-03-29 中国平安人寿保险股份有限公司 自动化配置脚本的方法、装置、电子设备及存储介质
CN111984970A (zh) * 2019-05-22 2020-11-24 深信服科技股份有限公司 一种sql注入检测方法、系统及电子设备和存储介质
CN111984970B (zh) * 2019-05-22 2023-11-07 深信服科技股份有限公司 一种sql注入检测方法、系统及电子设备和存储介质
CN110427754A (zh) * 2019-08-12 2019-11-08 腾讯科技(深圳)有限公司 网络应用攻击检测方法、装置、设备及存储介质
CN110427754B (zh) * 2019-08-12 2024-02-13 腾讯科技(深圳)有限公司 网络应用攻击检测方法、装置、设备及存储介质
CN113821791A (zh) * 2020-06-18 2021-12-21 中国电信股份有限公司 用于检测sql注入的方法、系统、存储介质及装置
CN112115466B (zh) * 2020-08-26 2021-05-14 广州锦行网络科技有限公司 一种绕过select关键字的sql注入方法
CN112115466A (zh) * 2020-08-26 2020-12-22 广州锦行网络科技有限公司 一种绕过select关键字的sql注入方法
CN112202822A (zh) * 2020-12-07 2021-01-08 中国人民解放军国防科技大学 数据库注入检测方法、装置、电子设备及存储介质
CN112822187A (zh) * 2020-12-31 2021-05-18 山石网科通信技术股份有限公司 网络攻击的检测方法及装置
CN112749186A (zh) * 2021-01-22 2021-05-04 广州虎牙科技有限公司 数据处理方法、装置、电子设备和计算机可读存储介质
CN112749186B (zh) * 2021-01-22 2024-02-09 广州虎牙科技有限公司 数据处理方法、装置、电子设备和计算机可读存储介质
US11562095B2 (en) 2021-01-28 2023-01-24 International Business Machines Corporation Reinforcing SQL transactions dynamically to prevent injection attacks
CN112948419A (zh) * 2021-03-02 2021-06-11 广州海量数据库技术有限公司 查询语句处理方法及装置
CN113158188A (zh) * 2021-03-26 2021-07-23 杭州数梦工场科技有限公司 检测sql注入攻击的方法及装置、电子设备
CN114896269A (zh) * 2022-05-31 2022-08-12 北京达佳互联信息技术有限公司 结构化查询语句检测方法、装置、电子设备及存储介质
CN115174201A (zh) * 2022-06-30 2022-10-11 北京安博通科技股份有限公司 一种基于筛选标签的安全规则管理方法及装置
CN115174201B (zh) * 2022-06-30 2023-08-01 北京安博通科技股份有限公司 一种基于筛选标签的安全规则管理方法及装置

Also Published As

Publication number Publication date
CN103744802B (zh) 2017-05-24

Similar Documents

Publication Publication Date Title
CN103744802A (zh) Sql注入攻击的识别方法及装置
US11343269B2 (en) Techniques for detecting domain threats
CN101312393B (zh) 一种sql注入漏洞检测方法及系统
US10545999B2 (en) Building features and indexing for knowledge-based matching
CN112131882A (zh) 一种多源异构网络安全知识图谱构建方法及装置
EP2282449B1 (en) Message descriptions
US10298599B1 (en) Systems for detecting a headless browser executing on a client computer
CN102542201B (zh) 一种网页中恶意代码的检测方法及系统
CN106407803B (zh) Sql注入漏洞的检测方法及装置
CN102567546B (zh) 一种sql注入检测方法及装置
EP3080721A1 (en) Query techniques and ranking results for knowledge-based matching
Gao et al. A system for automated open-source threat intelligence gathering and management
CN102591965A (zh) 一种黑链检测的方法及装置
CN104168293A (zh) 结合本地内容规则库识别可疑钓鱼网页的方法及系统
US20200336498A1 (en) Method and apparatus for detecting hidden link in website
US10521496B1 (en) Randomize markup to disturb scrapers
CN112579476B (zh) 一种漏洞和软件对齐的方法、装置以及存储介质
CN103617390A (zh) 一种恶意网页判断方法、装置和系统
CN104954346A (zh) 基于对象分析的攻击识别方法及装置
EP3745292A1 (en) Hidden link detection method and apparatus for website
CN104158828A (zh) 基于云端内容规则库识别可疑钓鱼网页的方法及系统
CN104954345A (zh) 基于对象分析的攻击识别方法及装置
CN103618742A (zh) 获取子域名的方法和系统以及网站管理员权限验证方法
CN115361182B (zh) 一种僵尸网络行为分析方法、装置、电子设备及介质
CN107222494A (zh) 一种sql注入攻击防御组件及方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20161130

Address after: 100016 Jiuxianqiao Chaoyang District Beijing Road No. 10, building 15, floor 17, layer 1701-26, 3

Applicant after: BEIJING QI'ANXIN SCIENCE & TECHNOLOGY CO., LTD.

Address before: 100088 Beijing city Xicheng District xinjiekouwai Street 28, block D room 112 (Desheng Park)

Applicant before: Beijing Qihu Technology Co., Ltd.

Applicant before: Qizhi Software (Beijing) Co., Ltd.

GR01 Patent grant
GR01 Patent grant
CP03 Change of name, title or address

Address after: 100032 Building 3 332, 102, 28 Xinjiekouwai Street, Xicheng District, Beijing

Patentee after: Qianxin Technology Group Co., Ltd.

Address before: 100016 Jiuxianqiao Chaoyang District Beijing Road No. 10, building 15, floor 17, layer 1701-26, 3

Patentee before: BEIJING QI'ANXIN SCIENCE & TECHNOLOGY CO., LTD.

CP03 Change of name, title or address