本发明专利技术提供一种sql注入检测方法及装置,属于网络安全技术领域。所述方法包括:从http请求中提取http参数;将提取到的每个http参数分别与预定义的各种动态sql模板组合成sql语句;分别对每个sql语句进行语法分析,若该sql语句不符合sql语法规则,则确定该http参数不会导致sql注入攻击,若该sql语句符合sql语法规则,则输出与该sql语句对应的标记字符串;将所述标记字符串与具有sql注入攻击特征的标记字符串集合进行匹配,若匹配成功,则确定该http请求为sql注入攻击。根据本发明专利技术,能够提高sql注入检测的执行效率,并降低sql注入检测的误报率。
【技术实现步骤摘要】
一种sql注入检测方法及装置
本专利技术涉及网络安全
,特别涉及一种sql注入检测方法及装置。
技术介绍
黑客在入侵网站的时候经常会利用sql(structurequerylanguage,结构化查询语言)注入漏洞执行各种非法数据库操作,比如盗取敏感信息、获取系统管理权限等。传统WAF(WebApplicationFirewall,Web应用防火墙)在过滤sql注入攻击时通常采用正则表达式进行sql注入匹配,或者直接进行sql语法关键词查找。采用正则表达式进行匹配或者直接进行sql语法关键词查找时,往往需要匹配完整个用户提交的数据后才能进行拦截,这样会导致执行效率比较低。另外,正则表达式由于不具备上下文分析能力,因此当用户通过post方式提交一篇包含sql关键字的文章时就可能进行误报拦截,而这有可能只是普通用户发表的一篇带有“select”关键词的技术文章而已。例如,对于如下的http请求,“http://foo.com/?id=l+foo+union+select+a+from+b”,传统WAF会拦截并认为是sql注入行为,而实际上该http请求并非一个sql注入攻击。可见,现有的sql注入检测方法不仅执行效率比较差,而且容易引起各种误报,把正常的http(hypertexttransferprotocol,超文本传输协议)访问也拦截了。
技术实现思路
有鉴于此,本专利技术的目的是提供一种sql注入检测方法及装置,用以提高sql注入检测的执行效率,并降低sql注入检测的误报率。为实现上述目的,本专利技术提供技术方案如下:一种sql注入检测方法,包括:从http请求中提取http参数;将提取到的每个http参数分别与预定义的各种动态sql模板组合成sql语句;分别对每个sql语句进行语法分析,若该sql语句不符合sql语法规则,则确定该http参数不会导致sql注入攻击,若该sql语句符合sql语法规则,则输出与该sql语句对应的标记字符串;将所述标记字符串与具有sql注入攻击特征的标记字符串集合进行匹配,若匹配成功,则确定该http请求为sql注入攻击。上述的sql注入检测方法,其中,还包括:若所有标记字符串均匹配失败,则确定该http请求不是sql注入攻击。上述的sql注入检测方法,其中,所述http参数包括:url参数、cookie数据和表单数据。上述的sql注入检测方法,其中,所述将提取到的每个http参数分别与预定义的各种动态sql模板组合成sql语句,包括:将http参数作为变量值传入到动态sql模块的变量中,从而得到组合后的sql语句。上述的sql注入检测方法,其中,所述将http参数作为变量值传入到动态sql模块的变量中,包括:将http参数分别以数字型变量值和字符型变量值传入到动态sql模块的变量中。一种sql注入检测装置,包括:http参数提取单元,用于从http请求中提取http参数;sql语句组合单元,用于将提取到的每个http参数分别与预定义的各种动态sql模板组合成sql语句;sql语法分析单元,用于分别对每个sql语句进行语法分析,若该sql语句不符合sql语法规则,则确定该http参数不会导致sql注入攻击,若该sql语句符合sql语法规则,则输出与该sql语句对应的标记字符串;标记字符串匹配单元,用于将所述标记字符串与具有sql注入攻击特征的标记字符串集合进行匹配,若匹配成功,则确定该http请求为sql注入攻击。上述的sql注入检测装置,其中,所述标记字符串匹配单元进一步用于:若所有标记字符串均匹配失败,则确定该http请求不是sql注入攻击。上述的sql注入检测装置,其中,所述http参数包括:url参数、cookie数据和表单数据。上述的sql注入检测装置,其中,所述sql语句组合单元进一步用于:将http参数作为变量值传入到动态sql模块的变量中,从而得到组合后的sql语句。上述述的sql注入检测装置,其中,所述sql语句组合单元进一步用于:将http参数分别以数字型变量值和字符型变量值传入到动态sql模块的变量中,得到对应的sql语句。与现有技术相比,本专利技术的有益效果如下:本专利技术通过对从http请求中提取出来的http参数进行sql语句模拟和sql语法分析,如果发现所有http参数对应的sql语句都不符合sql语法,就可以确定该http请求并非sql注入攻击,于是可以停止检测,从而执行效率更高;对于符合sql语法的sql语句,则进一步获取sql语法分析输出的标记字符串,通过将该标记字符串与具有sql注入攻击特征的标记字符串集合进行匹配,来确定该http请求是否为sql注入攻击,从而能够降低sql注入检测的误报率。附图说明图1是根据本专利技术一个实施例的sql注入检测方法流程图;图2是根据本专利技术一个实施例的sql注入检测装置结构图。具体实施方式以下结合附图对本专利技术实施例进行详细描述。现有技术通过采用正则表达式进行匹配或者直接进行sql语法关键词查找来检测sql注入攻击时,由于没有sql语句模拟和sql语法分析功能,往往需要匹配完整个用户提交的数据后才能进行拦截,这样会导致执行效率比较差;另外,由于正则表达式不具备上下文分析能力,可能会将正常的http请求检测为sql注入攻击,存在较高的误报率。为解决现有技术中存在的上述问题,本专利技术实施例提供一种sql注入检测方法和装置,通过对从http请求中提取出来的http参数进行sql语句模拟和sql语法分析,如果发现所有http参数对应的sql语句都不符合sql语法,就可以确定该http请求并非sql注入攻击,于是可以停止检测,从而执行效率更高;对于符合sql语法的sql语句,则进一步获取sql语法分析输出的标记字符串,通过将该标记字符串与具有sql注入攻击特征的标记字符串集合进行匹配,来确定该http请求是否为sql注入攻击,从而能够降低sql注入检测的误报率。图1是根据本专利技术一个实施例的sql注入检测方法流程图。参照图1,所述sql注入检测方法可以包括:步骤101,从http请求中提取http参数;Web应用程序中,url参数、cookie数据和表单数据这三个数据源包含了web用户提交的输入数据,是可能引入sql注入漏洞的位置。在本专利技术实施例中,从http请求中提取http参数是指从http请求中提取用户输入数据,即前述的url参数、cookie数据和表单数据。根据http协议规范,url参数位于url字符串的尾部,并由“?”字符分割开,后面为多个由“&”字符分割开的形式为NAME=VALUE的{NAME,VALUE}序列;COOKIE数据和表单数据均为多个由“;”字符分割开的形式为NAME=VALUE的{NAME,VALUE}序列;各种HTTP参数有可能按照HTTP编码方法进行了编码,因此,在本专利技术实施例中,还对HTTP参数按照HTTP解码方法进行解码,也就是说,后续步骤中的http参数是指解码后的http参数。例如,对于“GET/?id=1+and+1=1&class=2qHTTP/1.1”,提取到的URL参数为“id=1+and+1=1”以及“class=2q”,对这两个参数进行解码(“+”被解本文档来自技高网...
【技术保护点】
一种sql注入检测方法,其特征在于,包括:从http请求中提取http参数;将提取到的每个http参数分别与预定义的各种动态sql模板组合成sql语句;分别对每个sql语句进行语法分析,若该sql语句不符合sql语法规则,则确定该http参数不会导致sql注入攻击,若该sql语句符合sql语法规则,则输出与该sql语句对应的标记字符串;将所述标记字符串与具有sql注入攻击特征的标记字符串集合进行匹配,若匹配成功,则确定该http请求为sql注入攻击。
【技术特征摘要】
1.一种sql注入检测方法,其特征在于,包括:从http请求中提取http参数;将提取到的每个http参数分别与预定义的各种动态sql模板组合成sql语句;分别对每个sql语句进行语法分析,若该sql语句不符合sql语法规则,则确定该http参数不会导致sql注入攻击,若该sql语句符合sql语法规则,则根据预定义的sql关键词与标记的对应关系,输出与该sql语句对应的标记字符串;将所述标记字符串与具有sql注入攻击特征的标记字符串集合进行匹配,若匹配成功,则确定该http请求为sql注入攻击。2.如权利要求1所述的sql注入检测方法,其特征在于,还包括:若所有标记字符串均匹配失败,则确定该http请求不是sql注入攻击。3.如权利要求1或2所述的sql注入检测方法,其特征在于,所述http参数包括:url参数、cookie数据和表单数据。4.如权利要求3所述的sql注入检测方法,其特征在于,所述将提取到的每个http参数分别与预定义的各种动态sql模板组合成sql语句,包括:将http参数作为变量值传入到动态sql模块的变量中,从而得到组合后的sql语句。5.如权利要求4所述的sql注入检测方法,其特征在于,所述将http参数作为变量值传入到动态sql模块的变量中,包括:将http参数分别以数字型变量值和字符型变量值传入到动态sql模块的变量中。6.一种sql注入检测装置,其特...
【专利技术属性】
技术研发人员:石祖文,
申请(专利权)人:星云融创北京信息技术有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。