SQL注入攻击的检测方法、装置和具有该装置的防火墙制造方法及图纸

技术编号:8107860 阅读:233 留言:0更新日期:2012-12-21 08:23
本发明专利技术提供了一种SQL注入攻击的检测方法、检测装置和具有该装置的防火墙。该检测方法首先对用户提交的数据进行参数分解,然后对分解后的参数进行HTTP编码的解码,最后对解码后的参数进行SQL词法分析和SQL语法分析,并尝试建立SQL语法树,当语法树能够成功建立时,确定用户提交的数据对应的行为是SQL注入攻击。通过本发明专利技术,实现了一种基于语法分析的智能检测手段,不是通过描述攻击表现形式,而是通过描述SQL注入攻击本质特征以达到检测SQL注入攻击的目的,降低了误报率和漏报率,进一步地,通过语义分析和虚拟执行,能够确认攻击者具体的攻击行为和预测可能的攻击后果。

【技术实现步骤摘要】

本专利技术涉及互联网领域,具体而言,涉及ー种SQL注入攻击的检测方法、装置和具有该装置的防火墙
技术介绍
近几年,SQL注入攻击始终盘踞着Web安全威胁的前三位。攻击者通过SQL注入攻击,可以达到诸如网站挂马、网页篡改、信息盗取和滲透内网等非法目的,因此,SQL注入攻击严重影响Web的安全和正常运行。为了检测SQL注入攻击,现有的IPS、IDS或WAF等系统中,通常是基于正则表达式匹配的防护技木,也即通过正则表达式描述SQL注入攻击,与正则表达式相匹配的行为确定为SQL注入攻击,例如米用如下的正则表达式Union\s+select\s+. *from\s+。 但是,可以用于SQL注入攻击的形式非常多,通过正则表达式难以涵盖所有的形式,因而会产生漏报。为了避免漏报,需要通过大量的正则表达式进行匹配,无疑会直接产生网络性能的降低。此外,采用基于正则表达式的防护技术,在规则命中后,没有额外的处理,从而安全管理员不能知道攻击的详细行为,给安全管理员的工作带来了额外的分析负担。综上,由于正则表达式本身描述能力的局限性,使得基于正则表达式的SQL注入攻击检测技术存在误报高和漏报高的缺点。为了克服正则表达式在表述能力上的弱点,现存的很多WAF类产品采用基于机器学习的检测技木。通常该类技术都需要ー个学习阶段,也即采用统计分析、数据挖掘等方法,学习到正常流量的数据特征后,在后续的检测阶段,对接收到的流量在学习到的正常流量模型的指导下进行分类,采用“非正常即异常”的方式检测攻击。但是,由于机器学习过程中存在过学习和欠学习的问题,过学习通常意味着攻击流量混入了正常流量中被错误地学习,从而导致攻击的特征被带入到最終的正常流量模型,此时在检测时会带来漏报的问题;欠学习通常意味着学习流量并没有包含所有的正常流量模式,导致部分正常流量的模型没有被学习到,在检测过程中会导致误报的问题。综上,由于现实中很难完整地学习到正常流量的所有特征,使得基于机器学习的检测技术中仍然存在误报和漏报的问题。针对相关技术中SQL注入攻击的检测方法存在误报和漏报的问题,目前尚未提出有效的解决方案。
技术实现思路
本专利技术的主要目的在于提供ー种SQL注入攻击的检测方法、装置和具有该装置的防火墙,以解决SQL注入攻击的检测方法存在误报和漏报的问题。为了实现上述目的,根据本专利技术的ー个方面,提供了ー种SQL注入攻击的检测方法。根据本专利技术的SQL注入攻击的检测方法包括对用户提交的数据进行參数分解,得到分解后的參数;对分解后的參数进行HTTP编码的解码,得到解码后的參数;对解码后的參数进行SQL词法分析,得到词法分析后的參数;对词法分析后的參数进行SQL语法分祈,并建立SQL语法树;以及当语法树建立成功时,确定用户提交的数据对应的行为是SQL注入攻击。进ー步地,对用户提交的数据进行參数分解包括以下任意一种或多种參数分解对数据请求行中的URI进行參数分解;对数据请求的Cookie首部进行參数分解;对数据请求的Cookie2首部进行參数分解;对数据请求的Referer首部进行參数分解;以及对POST请求的实体进行參数分解。进ー步地,在对解码后的參数进行SQL词法分析之前,该方法还包括判断解码后的參数是否由数字和/或字母组成,其中,对解码后的參数进行词法分析包括当解码后的參数不是由数字和/或字母组成时,对解码后的參数进行SQL词法分析。进ー步地,在确定用户提交的数据对应的行为是SQL注入攻击后,该方法还包括 对成功建立的语法树进行语义分析;以及根据语义分析的结果确定SQL注入攻击的目的。进ー步地,在确定用户提交的数据对应的行为是SQL注入攻击后,该方法还包括将用户提交的数据在虚拟机中执行;以及根据执行结果确定SQL注入攻击的目的。为了实现上述目的,根据本专利技术的另一方面,提供了ー种SQL注入攻击的检测装置。根据本专利技术的SQL注入攻击的检测装置用于执行本专利技术提供的任意一种检测方法。为了实现上述目的,根据本专利技术的另一方面,提供了ー种SQL注入攻击的检测装置。根据本专利技术的SQL注入攻击的检测装置包括协议分析器,用于对用户提交的数据进行參数分解,并对分解后的參数进行HTTP编码的解码,得到解码后的參数;SQL词法分析器,用于对解码后的參数进行SQL词法分析,得到词法分析后的參数;以及SQL语法分析器,用于对词法分析后的參数进行SQL语法分析,并建立SQL语法树,以及当语法树建立成功吋,确定用户提交的数据对应的行为是SQL注入攻击。进ー步地,协议分析器包括以下任意一种或多种參数分解模块第一參数分解模块,用于对数据请求行中的URI进行參数分解;第二參数分解模块,用于对数据请求的Cookie首部进行參数分解;第三參数分解模块,用于对数据请求的Cookie2首部进行參数分解;第四參数分解模块,用于对数据请求的Referer首部进行參数分解;以及第五參数分解模块,用于对POST请求的实体进行參数分解。进ー步地,该检测装置还包括判断単元,用于在对解码后的參数SQL进行词法分析之前,判断解码后的參数是否由数字和/或字母组成,其中,SQL词法分析器还用于当解码后的參数不是由数字和/或字母组成时,对解码后的參数进行SQL词法分析。进ー步地,该检测装置还包括SQL语义解析器,用于在确定用户提交的数据对应的行为是SQL注入攻击后,对成功建立的语法树进行语义分析,以及根据语义分析的结果确定SQL注入攻击的目的。进ー步地,该检测装置还包括SQL执行虚拟机,用于在确定用户提交的数据对应的行为是SQL注入攻击后,执行用户提交的数据,以及根据执行结果确定SQL注入攻击的目的。为了实现上述目的,根据本专利技术的另一方面,提供了ー种防火墙。根据本专利技术的防火墙包括本专利技术提供的任意ー种SQL注入攻击的检测装置。通过本专利技术,采用包括以下步骤的SQL注入攻击的检测方法,首先对用户提交的数据进行參数分解,然后对分解后的參数进行HTTP编码的解码,最后对解码后的參数进行SQL词法分析和SQL语法分析,并尝试建立SQL语法树,当语法树能够成功建立时,确定用户提交的数据对应的行为是SQL注入攻击,实现了ー种基于语法分析的智能检测手段,不是通过描述攻击表现形式,而是通过描述SQL注入攻击本质特征以达到检测SQL注入攻击的目的,解决了 SQL注入攻击的检测方法容易误报和漏报的问题,进而达到了同时降低误报和漏报的效果。附图说明构成本申请的一部分的附图用来提供对本专利技术的进ー步理解,本专利技术的示意性实施例及其说明用于解释本专利技术,并不构成对本专利技术的不当限定。在附图中 图I是根据本专利技术实施例的防火墙的工作示意图;图2是根据本专利技术第一实施例的SQL注入攻击的检测装置的框图;图3是根据本专利技术第二实施例的SQL注入攻击的检测装置的框图;图4是根据本专利技术实施例的语法树的示意图;以及图5是根据本专利技术实施例的SQL注入攻击的检测方法的流程图。具体实施例方式需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将參考附图并结合实施例来详细说明本专利技术。图I是根据本专利技术实施例的防火墙的工作示意图,如图I所示,从因特网至WEB服务器,依次经过路由器或交換器、防火墙以及负载平衡,防火墙具有SQL注入攻击检测功能,设置于因特网与服务器之间,本文档来自技高网
...

【技术保护点】
一种SQL注入攻击的检测方法,其特征在于,包括:对用户提交的数据进行参数分解,得到分解后的参数;对所述分解后的参数进行HTTP编码的解码,得到解码后的参数;对所述解码后的参数进行SQL词法分析,得到词法分析后的参数;对所述词法分析后的参数进行SQL语法分析,并建立SQL语法树;以及当所述语法树建立成功时,确定所述用户提交的数据对应的行为是SQL注入攻击。

【技术特征摘要】
1.ー种SQL注入攻击的检测方法,其特征在于,包括对用户提交的数据进行參数分解,得到分解后的參数;对所述分解后的參数进行HTTP编码的解码,得到解码后的參数;对所述解码后的參数进行SQL词法分析,得到词法分析后的參数;对所述词法分析后的參数进行SQL语法分析,并建立SQL语法树;以及当所述语法树建立成功时,确定所述用户提交的数据对应的行为是SQL注入攻击。2.根据权利要求I所述的检测方法,其特征在于,对用户提交的数据进行參数分解包括以下任意一种或多种參数分解对数据请求行中的URI进行參数分解;对数据请求的Cookie首部进行參数分解;对数据请求的Cookie2首部进行參数分解;对数据请求的Referer首部进行參数分解;以及对POST请求的实体进行參数分解。3.根据权利要求I所述的检测方法,其特征在于,在对所述解码后的參数进行SQL词法分析之前,所述方法还包括判断所述解码后的參数是否由数字和/或字母組成,其中,对所述解码后的參数进行词法分析包括当所述解码后的參数不是由数字和/或字母组成时,对所述解码后的參数进行SQL词法分析。4.根据权利要求I至3中任一项所述的检测方法,其特征在于,在确定所述用户提交的数据对应的行为是SQL注入攻击后,所述方法还包括对成功建立的语法树进行语义分析;以及根据语义分析的结果确定所述SQL注入攻击的目的。5.根据权利要求I至3中任一项所述的检测方法,其特征在于,在确定所述用户提交的数据对应的行为是SQL注入攻击后,所述方法还包括将所述用户提交的数据在虚拟机中执行;以及根据执行结果确定所述SQL注入攻击的目的。6.ー种SQL注入攻击的检测装置,其特征在于,包括协议分析器,用于对用户提交的数据进行參数分解,并对分解后的參数进行HTTP...

【专利技术属性】
技术研发人员:张斌常磊
申请(专利权)人:山石网科通信技术北京有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1