一种基于SQL注入的web攻击防护方法及系统与流程

文档序号:26103266发布日期:2021-07-30 18:14阅读:77来源:国知局
一种基于SQL注入的web攻击防护方法及系统与流程

本发明涉及网络安全技术领域,特别涉及一种基于sql注入的web攻击防护方法及系统。



背景技术:

在任意的web应用程序之中都可能发生结构化查询语言(sql,structuredquerylanguage)注入攻击即sql注入攻击,通常情况下web应用程序需要与web应用服务器进行数据交互,对于web应用程序,获取对应的代码或者采用的具体数据库等都不是可以直接获取,而是需要进行一些测试以进行确认,采取的测试手段包括主动发送异常请求,以获取web应用程序返回的异常信息,利用异常信息中可能包含的信息,有针对性地对web应用程序构造含有攻击行为的sql语句对web应用程序实施攻击。sql注入就是攻击方通过发送恶意的sql参数,嗅探出web系统在开发者编程过程中的漏洞,并利用这些漏洞对web系统的数据库内容进行直接检索以及修改,进而攻击web应用程序。

目前常用的基于sql注入的web攻击行为检测方法中存在一些问题,在实际的攻击行为检测中,采用较多的是通过穷举法来对web系统存在的sql注入攻击漏洞进行检测,然而这样的处理方法在web系统首次被检测时,需要调用所有的测试用例,从而导致效率低下、处理大等问题,此外,现有的测试例的选择中也存在设计简单的问题,从而导致检测的结果不准确,甚至是漏报率问题。



技术实现要素:

为解决上述技术问题,本发明提出了一种基于sql注入的web攻击防护方法及系统,目的是实现针对sql注入的攻击行为的主动防护,提高网络安全。

本发明的第一方面目的是通过以下技术方案实现的:

一种基于sql注入的web攻击防护方法,包括步骤:

步骤s101:获取基于web应用程序的数据访问第一请求;

步骤s102:解析出所述访问请求中的结构化查询语言sql注入的特征,并发送至基于web应用程序的第一虚拟机中,以检测是否存在基于sql的web攻击行为;

步骤s103:若满足第一匹配规则,则将所述访问请求发送至虚拟数据库,以获取该数据访问请求相匹配的数据内容,若满足第二匹配规则,则将所述访问请求直接发送至web服务器以获取该数据访问请求相匹配的数据内容,若都不匹配,则直接返回错误信息。

进一步,在获取基于web应用程序的数据访问第一请求的步骤之前还包括:预先在第一虚拟机中通过机器学习算法建立基于sql注入的分类检测模型,该分类检测模型包括接收数据输入的输入层,通过预设的规则进行筛选的策略层以及结果输出层,其中,预设的规则包括第一匹配规则,第二匹配规则,所述的第一匹配规则为分类检测模型中设置的不符合基于ip地址、表单数据以及关键字的黑名单规则;所述的第二匹配规则为分类检测模型中设置的基于ip地址、表单数据以及关键字的白名单规则。

进一步,若满足第一匹配规则,则将所述访问请求发送至虚拟数据库,以获取该数据访问请求相匹配的数据内容的步骤,具体包括:

将提取的sql特征输入至分类检测模型;

通过策略层对特征进行匹配,若匹配出该特征不属于基于ip地址、表单数据以及关键字的黑名单规则中的任一一项,同时,也不属于基于ip地址、表单数据以及关键字的白名单规则中的任一一项,则将所述访问请求发送至虚拟数据库,以获取该数据访问请求相匹配的数据内容。

进一步,将所述访问请求发送至虚拟数据库,以获取该数据访问请求相匹配的数据内容的步骤,具体包括:

所述虚拟数据库接收所述访问请求,提取出所述第一请求中携带的数据内容属性,并与该虚拟数据库中预先存储的内容数据表进行匹配,查找出该内容数据存储的web服务器、数据库的标识以及位置,将该访问请求存储至虚拟数据库中的数据请求列表中,并等待响应,虚拟数据库建立一基于第一访问请求的第二请求,该第二请求仅携带查找出的web服务器及数据库标识以获取内容,虚拟数据库将该内容与第一请求匹配后,返回基于第一请求的内容响应消息。

进一步,若满足第二匹配规则,则将所述访问请求直接发送至web服务器以获取该数据访问第一请求相匹配的数据内容,具体包括:

将提取的sql特征输入至分类检测模型;

通过策略层对特征进行匹配,若匹配出该特征属于基于ip地址、表单数据以及关键字的白名单规则中的任一一项,所述虚拟机允许该访问请求进入虚拟机的数据库层,在该数据库层中查找出与第一请求匹配的数据内容的web服务器、数据库的标识以及位置,以获取内容。

进一步,获取内容的步骤之后,还包括,将获取的内容以及与该内容匹配的第一请求再次输入至第一虚拟机的分类检测模型中,再次进行攻击行为检测,若未检测出攻击行为,则直接返回基于第一请求的内容数据,若检测出攻击行为,则返回错误信息。

进一步,再次进行攻击行为检测的步骤还包括,

判断获取的内容是否存在敏感数据,若存在,则提取敏感数据的获取权限,以确定所述第一访问请求是否满足访问权限,若不满足,则直接返回错误信息。

进一步,若再次进行攻击行为检测时检测出攻击行为,则将所述sql行为特征输入至分类检测模型中,并更新该分类检测模型。

本发明的第二方面的目的是提出了一种基于sql注入的web攻击防护系统,所述系统包括第一虚拟机、虚拟数据库、web服务器以及数据库,其中,第一虚拟机包括:

获取模块,用于获取基于web应用程序的数据访问第一请求;

检测模块,用于检测第一请求是否存在攻击行为,以及检测获取的内容中是否存在攻击行为;

处理模块,用于将检测模块的检测内容输入至分类检测模型,并根据不同的规则输出结果。

本发明的第三方面的目的是提出了一种可读存储介质,所述可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如上所述的基于sql注入的web攻击防护方法的步骤。

本发明的有益效果在于:

本发明提出了一种基于sql注入的web攻击防护方法,获取基于web应用程序的数据访问第一请求;解析出所述访问请求中的结构化查询语言sql注入的特征,并发送至基于web应用程序的第一虚拟机中,以检测是否存在基于sql的web攻击行为,若满足第一匹配规则,则将所述访问请求发送至虚拟数据库,以获取该数据访问请求相匹配的数据内容,若满足第二匹配规则,则将所述访问请求直接发送至web服务器以获取该数据访问请求相匹配的数据内容,若都不匹配,则直接返回错误信息。通过在web应用程序端的第一次检测以及内容返回的第二次检测,从而实现对sql注入存在的漏洞进行有效防护,有效提升了互联网数据交互过程中的网络安全。

本发明的其他优点、目标和特征在某种程度上将在随后的说明书中进行阐述,并且在某种程度上,基于对下文的考察研究对本领域技术人员而言将是显而易见的,或者可以从本发明的实践中得到教导。本发明的目标和其他优点可以通过下面的说明书和前述的权利要求书来实现和获得。

附图说明

为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步的详细描述,其中:

图1为基于sql注入的web攻击防护方法流程图;

图2为基于sql注入的web攻击防护系统架构图。

具体实施方式

以下将参照附图,对本发明的优选实施例进行详细的描述。应当理解,优选实施例仅为了说明本发明,而不是为了限制本发明的保护范围。

如图1所示,本发明提出了一种基于sql注入的web攻击防护方法,该方法具体包括:

步骤s101:获取基于web应用程序的数据访问第一请求。

sql注入漏洞是一种基于网站安全的互联网数据传输过程中产生的漏洞,当web应用程序向后退数据库传递sql查询时,如果攻击方可以修改sql语句的语法或词义,就可能产生sql注入,攻击者可以通过web表单数据、恶意的ip地址攻击、统一资源定位url的参数修改或者httprequest的body进行sql攻击。典型的sql注入攻击主要是针对服务端的数据库。

本发明的目的在于当进行web应用程序访问时,拦截该访问请求,并通过检测其是否sql注入攻击来确定请求的安全性与否。因此,本发明的技术方案中设置一虚拟机来在本地首先进行安全性检测。

具体的,预先在第一虚拟机中通过机器学习算法建立基于sql注入的分类检测模型,该分类检测模型包括接收数据输入的输入层,通过预设的规则进行筛选的策略层以及结果输出层。本发明中的虚拟机可以为kvm虚拟机,并使用qemu(quickemulator独立虚拟软件)作为虚拟机的上层控制工具,同时在该虚拟机中设置不同的分层结构。其包括了分类检测模型的各个层次结构,同时还包括一模拟数据库结构,该数据库结构中存储有不同web服务器以及数据库的内容列表和地址,当有请求进入到该数据库结构中,可以通过查找相应的数据标识以获取远程的数据库内容。

在本发明中的白名单、黑名单都是预先建立的基于sql注入可能产生的行为特征进行部署,白名单中记录了所有没有攻击行为的sql语句,黑名单中存储有所有具有攻击行为的sql语句,然而sql注入攻击模式并不是一成不变的,随着互联网网络技术发展,会产生一些新的sql注入攻击行为,也可能产生一些没有攻击行为的sql语句,这就需要实时区分,因此,在本发明中设置了第一匹配规则和第二匹配规则,所述的第一匹配规则为分类检测模型中设置的不符合基于ip地址、表单数据以及关键字的黑名单规则;所述的第二匹配规则为分类检测模型中设置的基于ip地址、表单数据以及关键字的白名单规则。因为不属于黑白名单内记录的sql语句可能是没有威胁,也可能存在威胁,但是为了不影响内容获取的效果,还是会允许这部分内容去访问数据,但是不是直接访问,而是通过虚拟机以及虚拟数据库来进行拦截、创建新的请求进行内容获取。

步骤s102:解析出所述访问请求中的结构化查询语言sql注入的特征,并发送至基于web应用程序的第一虚拟机中,以检测是否存在基于sql的web攻击行为。

步骤s103:若满足第一匹配规则,则将所述访问请求发送至虚拟数据库,以获取该数据访问请求相匹配的数据内容,若满足第二匹配规则,则将所述访问请求直接发送至web服务器以获取该数据访问请求相匹配的数据内容,若都不匹配,则直接返回错误信息。

在本发明中,虚拟机加的作用是对sql语句进行检测,以判断是否存在攻击行为,该步骤中使用了分类检测模型,具体的,将提取的sql特征输入至分类检测模型;通过策略层对特征进行匹配,若匹配出该特征不属于基于ip地址、表单数据以及关键字的黑名单规则中的任一一项,同时,也不属于基于ip地址、表单数据以及关键字的白名单规则中的任一一项,则将所述访问请求发送至虚拟数据库,以获取该数据访问请求相匹配的数据内容。

所述虚拟数据库接收所述访问请求,提取出所述第一请求中携带的数据内容属性,并与该虚拟数据库中预先存储的内容数据表进行匹配,查找出该内容数据存储的web服务器、数据库的标识以及位置,将该访问请求存储至虚拟数据库中的数据请求列表中,并等待响应,虚拟数据库建立一基于第一访问请求的第二请求,该第二请求仅携带查找出的web服务器及数据库标识以获取内容,虚拟数据库将该内容与第一请求匹配后,返回基于第一请求的内容响应消息。

根据本发明的实施例,若满足第二匹配规则,则将所述访问请求直接发送至web服务器以获取该数据访问第一请求相匹配的数据内容,具体包括:

将提取的sql特征输入至分类检测模型;

通过策略层对特征进行匹配,若匹配出该特征属于基于ip地址、表单数据以及关键字的白名单规则中的任一一项,所述虚拟机允许该访问请求进入虚拟机的数据库层,在该数据库层中查找出与第一请求匹配的数据内容的web服务器、数据库的标识以及位置,以获取内容。

获取内容的步骤之后,还包括,将获取的内容以及与该内容匹配的第一请求再次输入至第一虚拟机的分类检测模型中,再次进行攻击行为检测,若未检测出攻击行为,则直接返回基于第一请求的内容数据,若检测出攻击行为,则返回错误信息。若再次进行攻击行为检测时检测出攻击行为,则将所述sql行为特征输入至分类检测模型中,并更新该分类检测模型。

根据本发明的目的,web应用程序访问的内容有些是属于敏感类型的,比如比较重要的一些数据,此时就需要谨慎对待其获取过程,在本发明中,当获取到内容后,还需要判断获取的内容是否存在敏感数据,若存在,则提取敏感数据的获取权限,以确定所述第一访问请求是否满足访问权限,若不满足,则直接返回错误信息。

在本发明中设置了虚拟机的数据库层以及一虚拟数据库,目的也是根据不同类别的访问请求进行区分,如上文,虚拟数据库接收的是既不是黑名单也不是白名单中的数据,但是可能构成潜在威胁,这时需要虚拟数据库以拦截请求,并且创建新的请求来获取内容返回至虚拟数据库中对应的请求中,而虚拟机的数据库层中的数据库则因为是白名单中的数据请求,因此可以认为没有威胁,可以直接进行数据内容的访问,而不需要创建新的请求。

在本发明中,所有获取的内容都需要在虚拟机端再次进行检测,无论是之前没有威胁的白名单中的sql语句,还是可能存在威胁的来自虚拟数据层的请求内容,都需要经过虚拟机再次检测,若没有威胁行为,则无安全威胁,可以直接返回内容,若有威胁行为,则立即截断,并返回错误信息,本发明的技术方案通过不同类别的数据获取过程以及双重的威胁检测较为高效的控制了威胁来源,保证了数据传输过程中的安全性。

根据本发明的实施例,本发明还提出了一种基于sql注入的web攻击防护系统,所述系统包括第一虚拟机、虚拟数据库、web服务器以及数据库,其中,如图2所示,第一虚拟机包括:

获取模块,用于获取基于web应用程序的数据访问第一请求;

检测模块,用于检测第一请求是否存在攻击行为,以及检测获取的内容中是否存在攻击行为;

处理模块,用于将检测模块的检测内容输入至分类检测模型,并根据不同的规则输出结果,处理模块还包括用于实现上述中不同规则匹配、分析的具体方法的步骤。

根据本发明的实施例,本发明还提出了一种可读存储介质,可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如上所述的基于本地命令执行的web攻击行为检测方法的步骤。

应当认识到,本发明的实施例可以由计算机硬件、硬件和软件的组合、或者通过存储在非暂时性计算机可读存储器中的计算机指令来实现或实施。所述方法可以使用标准编程技术-包括配置有计算机程序的非暂时性计算机可读存储介质在计算机程序中实现,其中如此配置的存储介质使得计算机以特定和预定义的方式操作——根据在具体实施例中描述的方法和附图。每个程序可以以高级过程或面向对象的编程语言来实现以与计算机系统通信。然而,若需要,该程序可以以汇编或机器语言实现。在任何情况下,该语言可以是编译或解释的语言。此外,为此目的该程序能够在编程的专用集成电路上运行。

此外,可按任何合适的顺序来执行本文描述的过程的操作,除非本文另外指示或以其他方式明显地与上下文矛盾。本文描述的过程(或变型和/或其组合)可在配置有可执行指令的一个或多个计算机系统的控制下执行,并且可作为共同地在一个或多个处理器上执行的代码(例如,可执行指令、一个或多个计算机程序或一个或多个应用)、由硬件或其组合来实现。所述计算机程序包括可由一个或多个处理器执行的多个指令。

进一步,所述方法可以在可操作地连接至合适的任何类型的计算平台中实现,包括但不限于个人电脑、迷你计算机、主框架、工作站、网络或分布式计算环境、单独的或集成的计算机平台、或者与带电粒子工具或其它成像装置通信等等。本发明的各方面可以以存储在非暂时性存储介质或设备上的机器可读代码来实现,无论是可移动的还是集成至计算平台,如硬盘、光学读取和/或写入存储介质、ram、rom等,使得其可由可编程计算机读取,当存储介质或设备由计算机读取时可用于配置和操作计算机以执行在此所描述的过程。此外,机器可读代码,或其部分可以通过有线或无线网络传输。当此类媒体包括结合微处理器或其他数据处理器实现上文所述步骤的指令或程序时,本文所述的发明包括这些和其他不同类型的非暂时性计算机可读存储介质。当根据本发明所述的方法和技术编程时,本发明还包括计算机本身。

计算机程序能够应用于输入数据以执行本文所述的功能,从而转换输入数据以生成存储至非易失性存储器的输出数据。输出信息还可以应用于一个或多个输出设备如显示器。在本发明优选的实施例中,转换的数据表示物理和有形的对象,包括显示器上产生的物理和有形对象的特定视觉描绘。

最后说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本技术方案的宗旨和范围,其均应涵盖在本发明的权利要求范围当中。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1