技术领域
[0001] 本申请涉及计算机安全技术领域,具体而言,涉及一种攻击防御方法、攻击防御装置、计算机可读存储介质、处理器与攻击防御系统。
相关背景技术
[0002] 当前,基于Web环境的互联网应用越来越广泛。在企业信息化过程中,各种服务都架设在Web平台上。而Web服务程序的迅速发展也引起了黑客的关注。例如,黑客利用网站操作系统的漏洞,向Web服务程序中注入SQL攻击代码(即SQL注入攻击)和/或XSS攻击代码(即XSS攻击)以进行攻击,从而得到Web服务的控制权限,进而窃取到重要的内部数据。
[0003] 针对上述的问题,现有技术中通常有两种解决方案,一种是在应用开发阶段进行输入确认、输入编码以及输出编码等操作;另一种是使用WAF(网站应用级入侵防御系统,Web Application Firewall,简称WAF)防御系统。例如,发明专利CN106355094A通过替换Web服务器和SQL文件解析端的关键字方式进行攻击防御。发明专利CN106503557A在SQL中将需查询的数据库字段名进行变换映射,使得攻击者无法猜到字段名,进而无法实现获得数据库关键信息的目标。但上述两件发明均未能解决XSS注入攻击的问题。
[0004] 因此,亟需一种能够对XSS攻击进行防御的方法。
具体实施方式
[0026] 需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
[0027] 为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
[0028] 需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
[0029] 为了便于描述,以下对本申请实施例涉及的部分名词或术语进行说明:
[0030] WAF:通过执行一系列针对HTTP/HTTPS的安全策略来专门为Web服务程序提供保护的一种防御系统;
[0031] SQL注入攻击:通过提交一段数据库查询代码对数据库进行查询,再根据程序返回的结果,获得一些想得知的数据;
[0032] XSS攻击(跨站脚本攻击):通过在用户访问的页面中嵌入恶意脚本代码。在用户访问页面时,导致嵌入的恶意脚本代码被执行,从而达到恶意攻击的目的。
[0033] 正如背景技术中所说的,现有技术中难以对XSS攻击进行防御,为了解决上述问题,本申请的一种典型的实施方式中,提供了一种攻击防御方法、攻击防御装置、计算机可读存储介质、处理器与攻击防御系统。
[0034] 根据本申请的实施例,提供了一种攻击防御方法。
[0035] 图1是根据本申请实施例的攻击防御方法的流程图。如图1所示,该攻击防御方法包括以下步骤:
[0036] 步骤S101,接收由Web服务器发送的语法解析规则,上述语法解析规则为上述Web服务器在接收到客户端浏览器发送的查询请求的情况下,基于随机生成的上述客户端浏览器的数字证书而生成动态的语法解析规则;
[0037] 步骤S102,至少根据上述语法解析规则和上述查询请求对应的查询语句,生成自定义查询脚本;
[0038] 步骤S103,至少将上述自定义查询脚本发送至目标数据库,使得上述目标数据库根据上述自定义查询脚本进行查询,得到目标查询数据。
[0039] 上述的攻击防御方法中,首先,接收由Web服务器发送的基于随机生成的客户端浏览器的数字证书而生成的语法解析规则;然后,基于语法解析规则和查询请求对应的查询语句,对上述查询语句进行编译(也可以称之为解释),得到自定义查询脚本;最后,至少将自定义查询脚本发送至目标数据库,从而使得目标数据库在接收到自定义查询脚本的情况下,至少根据自定义查询脚本进行查询,得到目标查询数据。在本申请的攻击防御方法中,根据Web服务器发送的语法解析规则,对查询语句进行编译,得到自定义查询脚本,即实现了通过语法解析规则,对查询语句进行加密,得到动态的自定义查询脚本,这样保证了得到的自定义查询脚本的安全性较高。由于是基于语法解析规则,对对应的查询语句进行编译,得到自定义查询脚本,这样使得从前端页面的注入的XSS攻击代码无法被执行,从而可以避免XSS注入攻击,进而解决了现有技术中难以对XSS攻击进行防御的问题。
[0040] 本申请的一种具体的实施例中,数字证书可以为由CA(认证中心,Certification Authority,简称CA)服务器生成的。上述自定义查询脚本为目标数据库可以识别的自定义查询脚本。
[0041] 在实际的应用过程中,上述Web服务器和上述目标数据库可以是相互隔离的。本申请的另一种具体的实施例中,上述目标数据库可以为MySQL数据库、SQL Server数据库、Oracle数据库等等。当然,在实际的应用过程中,上述目标数据库并不限于MySQL数据库、SQL Server数据库、Oracle数据库,还可以为现有技术中任何一种可行的数据库。在本申请中,并不对上述目标数据库的类型进行限制。
[0042] 本申请的一种具体的实施例中,还可以根据客户端浏览器的数字证书和动态语法库来生成语法解析规则,这样可以较为简单地得到语法解析规则。上述动态语法库可以为一个随时更新,且可以提供若干个语法规则的规则库。
[0043] 具体地,上述目标数据库可以用于存储各种类型的业务数据,在本申请中并不对上述目标数据库存储的数据进行限制。本申请的一种具体的实施例中,上述目标数据库可以用于存储发动机全生命周期的相关业务数据。例如,发动机在生产、装配、使用、维修等多个阶段的业务数据。
[0044] 需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
[0045] 为了较为简单地实现根据语法解析规则,将查询语句编译为自定义查询脚本,本申请的一种实施例中,至少根据上述语法解析规则和上述查询请求对应的查询语句,生成自定义查询脚本,包括:控制动态查询语法解释器根据语法解析规则,将上述查询语句编译为上述自定义查询脚本,上述动态查询语法解释器为基于语法解析规则,将上述查询语句编译为上述自定义查询脚本的插件。
[0046] 在实际的应用过程中,上述动态查询语法解释器可以根据查询语句对应的语法解析规则,将查询语句编译为自定义查询脚本,即实现了对查询语句进行动态化的加密处理,这样使得前端注入的XSS攻击代码无法被执行。由于自定义查询脚本是通过语法解析规则动态地得到的,实现了动态地对目标数据库字段名进行变换映射,从而使得攻击者无法准确地知晓各字段名,进而还可以抵御SQL注入的攻击。同时,本申请的攻击防御方法,由于仅仅是通过语法解析规则,将查询语句编译为自定义查询脚本,并不会增加目标数据库的查询难度,保证了目标数据库能够根据自定义查询脚本较为容易地得到目标查询数据,保证了查询的速度较快,从而提高了用户的使用体验。
[0047] 本申请的另一种实施例中,至少将上述自定义查询脚本发送至目标数据库,使得上述目标数据库根据上述自定义查询脚本进行查询,得到目标查询数据,包括:控制自定义查询脚本解释器,将上述自定义查询脚本编译为标准SQL查询语言,上述自定义查询脚本解释器为将上述自定义查询脚本编译为上述标准SQL查询语言的插件;将上述标准SQL查询语言发送至上述目标数据库,使得上述目标数据库根据上述标准SQL查询语言进行查询,得到上述目标查询数据。在该实施例中,通过自定义查询脚本解释器,将自定义查询脚本编译为标准SQL查询语言,这样保证了可以较为简单地得到标准SQL查询语言,同时目标数据通过标准SQL查询语法进行查询,这样可以降低目标数据库查询的复杂度,保证了得到的目标查询数据较为准确。
[0048] 本申请的一种具体的实施例中,上述自定义查询脚本解释器可以称之为数据库shell。上述自定义查询脚本解释器可以将自定义查询脚本转换为标准SQL查询语言。
[0049] 本申请的一种具体的实施例中,如图2所示,本申请的攻击防御方法在Web服务器100和目标数据库400之间分别设置了动态查询语法解释器200和自定义查询脚本解释器
300。其中,动态查询语法解释器200可以基于语法解析规则,将查询请求对应的查询语句,编译为自定义查询脚本。自定义查询脚本解释器300可以将自定义查询脚本编译为标准SQL查询语言。与现有技术中,目标数据库400直接通过Web服务器100发送的查询语句进行查询相比,本方案中基于语法解析规则,对查询语句进行了动态地加密,提高了在查询过程中的安全性,从而可以抵御XSS注入攻击和SQL注入攻击。
[0050] 本申请的又一种实施例中,如图3所示,在得到上述目标查询数据之后,上述攻击防御方法还包括:接收上述Web服务器发送的自定义前端脚本,并至少基于上述数字证书,将上述自定义前端脚本编译为动态语法前端脚本,其中,上述自定义前端脚本为上述Web服务器基于上述目标数据库发送的上述目标查询数据进行编译得到的;至少基于上述数字证书,将上述动态语法前端脚本编译为前端展示页面,并将上述前端展示页面显示在上述客户端浏览器上。在该实施例中,Web服务器在接收到目标数据库的目标查询数据的情况下,将目标查询数据编译为自定义前端脚本,再基于数字证书,将自定义前端脚本编译为前端展示页面,这样实现了对前端展示页面的动态加密,这样可以进一步地抵御XSS注入攻击和SQL注入攻击。
[0051] 为了较为简单地得到动态语法前端脚本,本申请的再一种实施例中,至少基于上述数字证书,将上述自定义前端脚本编译为动态语法前端脚本,包括:控制自定义前端脚本解释器根据上述数字证书,将上述自定义前端脚本编译为上述动态语法前端脚本,上述自定义前端脚本解释器为基于上述数字证书,将上述自定义前端脚本编译为上述动态语法前端脚本的插件。
[0052] 具体地,上述的实施例中,上述自定义前端脚本解释器基于数字证书,将目标查询数据编译为动态的自定义前端脚本。
[0053] 本申请的一种实施例中,至少基于上述数字证书,将上述动态语法前端脚本编译为前端展示页面,包括:控制动态前端语法解释器至少基于上述数字证书,生成动态前端解析规则;控制上述动态前端语法解释器根据上述动态前端解析规则,将上述动态语法前端脚本编译为上述前端展示页面,上述动态前端语法解释器为基于上述动态前端解析规则,将上述动态语法前端脚本编译为上述前端展示页面的插件。在该实施例中,动态前端语法解释器根据动态前端解析规则,将动态语法前端脚本编译为前端展示页面,即标准的Html和js脚本,这样不仅实现了对目标查询语句的加密处理,还实现了较为准确地在客户端浏览器上展示前端展示页面。
[0054] 本申请的一种具体的实施例中,可以根据数字证书和动态前端语法库,生成动态前端解析规则。其中,上述动态前端语法库为一个可随时更新且可以提供若干个前端语法规则的规则库。
[0055] 本申请的一种具体的实施例中,如图4所示,在Web服务器100与客户端浏览器500之间分别设置自定义前端脚本解释器600和动态前端语法解释器700。其中,自定义前端脚本解释器600根据上述数字证书,将Web服务器100编译得到的自定义前端脚本再次编译为动态语法前端脚本。动态前端语法解释器700基于数字证书,生成动态前端解析规则,并基于动态前端解析规则,将动态语法前端脚本编译为前端展示页面。即实现了对目标查询数据进行动态地加密,进一步地实现了可以抵御XSS注入攻击和SQL注入攻击。
[0056] 在实际的应用过程中,为了进一步地提高系统的安全性,上述动态查询语法解释器、上述自定义查询脚本解释器、上述自定义前端脚本解释器以及上述动态前端语法解释器,即可以统称为浏览器插件,可直接作为定制浏览器发布给特定的客户端人员使用。
[0057] 具体地,现有技术中的目标数据库和Web服务器中,Web服务器直接将SQL查询语句发送给目标数据库;客户端浏览器的前端脚本也是直接通过从Web服务器获得的js脚本,这样的结构模式是产生SQL注入攻击和XSS攻击的根源。故本申请中在Web服务器和目标数据库之间分别设置了动态查询语法解释器和自定义查询脚本解释器,从而实现了将查询语句编译动态的SQL查询语句。在Web服务器和客户端浏览器之间分别设置了自定义前端脚本解释器和动态前端语法解释器,从而实现了在将目标查询语句编译动态的前端脚本。本申请的攻击防御方法将应用程序层的查询语句、前端页面的脚本进行了动态化的语法处理,并进行了非对称的混淆、加密和加盐等处理,实现将当前客户端浏览器的任何的查询请求和前端页面脚本全部自定义为动态脚本,避免了攻击者按照现有通用脚本进行攻击的可能性,从而解决了现有技术中难以对XSS攻击进行防御的问题。
[0058] 本申请实施例还提供了一种攻击防御装置,需要说明的是,本申请实施例的攻击防御装置可以用于执行本申请实施例所提供的用于攻击防御方法。以下对本申请实施例提供的攻击防御装置进行介绍。
[0059] 图5是根据本申请实施例的攻击防御装置的结构示意图。如图5所示,该攻击防御装置包括:
[0060] 接收单元10,用于接收由Web服务器发送的语法解析规则,上述语法解析规则为上述Web服务器在接收到客户端浏览器发送的查询请求的情况下,基于随机生成的上述客户端浏览器的数字证书而生成动态的语法解析规则;
[0061] 生成单元20,用于至少根据上述语法解析规则和上述查询请求对应的查询语句,生成自定义查询脚本;
[0062] 查询单元30,用于至少将上述自定义查询脚本发送至目标数据库,使得上述目标数据库根据上述自定义查询脚本进行查询,得到目标查询数据。
[0063] 上述的攻击防御装置中,接收单元用于接收由Web服务器发送的基于随机生成的客户端浏览器的数字证书而生成的语法解析规则;生成单元用于基于语法解析规则和查询请求对应的查询语句,对上述查询语句进行编译(也可以称之为解释),得到自定义查询脚本;查询单元用于至少将自定义查询脚本发送至目标数据库,从而使得目标数据库在接收到自定义查询脚本的情况下,至少根据自定义查询脚本进行查询,得到目标查询数据。在本申请的攻击防御方法中,根据Web服务器发送的语法解析规则,对查询语句进行编译,得到自定义查询脚本,即实现了通过语法解析规则,对查询语句进行加密,得到动态的自定义查询脚本,这样保证了得到的自定义查询脚本的安全性较高。由于是基于语法解析规则,对对应的查询语句进行编译,得到自定义查询脚本,这样使得从前端页面的注入的XSS攻击代码无法被执行,从而可以避免XSS注入攻击,进而解决了现有技术中难以对XSS攻击进行防御的问题。
[0064] 本申请的一种具体的实施例中,数字证书可以为由CA(认证中心,Certification Authority,简称CA)服务器生成的。上述自定义查询脚本为目标数据库可以识别的自定义查询脚本。
[0065] 在实际的应用过程中,上述Web服务器和上述目标数据库可以是相互隔离的。本申请的另一种具体的实施例中,上述目标数据库可以为MySQL数据库、SQL Server数据库、Oracle数据库等等。当然,在实际的应用过程中,上述目标数据库并不限于MySQL数据库、SQL Server数据库、Oracle数据库,还可以为现有技术中任何一种可行的数据库。在本申请中,并不对上述目标数据库的类型进行限制。
[0066] 本申请的一种具体的实施例中,还可以根据客户端浏览器的数字证书和动态语法库来生成语法解析规则,这样可以较为简单地得到语法解析规则。上述动态语法库可以为一个随时更新,且可以提供若干个语法规则的规则库。
[0067] 具体地,上述目标数据库可以用于存储各种类型的业务数据,在本申请中并不对上述目标数据库存储的数据进行限制。本申请的一种具体的实施例中,上述目标数据库可以用于存储发动机全生命周期的相关业务数据。例如,发动机在生产、装配、使用、维修等多个阶段的业务数据。
[0068] 为了较为简单地实现根据语法解析规则,将查询语句编译为自定义查询脚本,本申请的一种实施例中,生成单元包括编译模块,用于控制动态查询语法解释器根据语法解析规则,将上述查询语句编译为上述自定义查询脚本,上述动态查询语法解释器为基于语法解析规则,将上述查询语句编译为上述自定义查询脚本的插件。
[0069] 在实际的应用过程中,上述动态查询语法解释器可以根据查询语句对应的语法解析规则,将查询语句编译为自定义查询脚本,即实现了对查询语句进行动态化的加密处理,这样使得前端注入的XSS攻击代码无法被执行。由于自定义查询脚本是通过语法解析规则动态地得到的,实现了动态地对目标数据库字段名进行变换映射,从而使得攻击者无法准确地知晓各字段名,进而还可以抵御SQL注入的攻击。同时,本申请的攻击防御方法,由于仅仅是通过语法解析规则,将查询语句编译为自定义查询脚本,并不会增加目标数据库的查询难度,保证了目标数据库能够根据自定义查询脚本较为容易地得到目标查询数据,保证了查询的速度较快,从而提高了用户的使用体验。
[0070] 本申请的另一种实施例中,查询单元包括第一控制模块和发送模块,其中,上述第一控制模块用于控制自定义查询脚本解释器,将上述自定义查询脚本编译为标准SQL查询语言,上述自定义查询脚本解释器为将上述自定义查询脚本编译为上述标准SQL查询语言的插件;上述发送模块用于将上述标准SQL查询语言发送至上述目标数据库,使得上述目标数据库根据上述标准SQL查询语言进行查询,得到上述目标查询数据。在该实施例中,通过自定义查询脚本解释器,将自定义查询脚本编译为标准SQL查询语言,这样保证了可以较为简单地得到标准SQL查询语言,同时目标数据通过标准SQL查询语法进行查询,这样可以降低目标数据库查询的复杂度,保证了得到的目标查询数据较为准确。
[0071] 本申请的一种具体的实施例中,上述自定义查询脚本解释器可以称之为数据库shell。上述自定义查询脚本解释器可以将自定义查询脚本转换为标准SQL查询语言。
[0072] 本申请的一种具体的实施例中,如图2所示,本申请的攻击防御方法在Web服务器100和目标数据库400之间分别设置了动态查询语法解释器200和自定义查询脚本解释器
300。其中,动态查询语法解释器200可以基于语法解析规则,将查询请求对应的查询语句,编译为自定义查询脚本。自定义查询脚本解释器300可以将自定义查询脚本编译为标准SQL查询语言。与现有技术中,目标数据库400直接通过Web服务器100发送的查询语句进行查询相比,本方案中基于语法解析规则,对查询语句进行了动态地加密,提高了在查询过程中的安全性,从而可以抵御XSS注入攻击和SQL注入攻击。
[0073] 本申请的又一种实施例中,上述攻击防御装置还包括接收单元和显示单元,其中,接收单元用于在得到上述目标查询数据之后,接收上述Web服务器发送的自定义前端脚本,并至少基于上述数字证书,将上述自定义前端脚本编译为动态语法前端脚本,其中,上述自定义前端脚本为上述Web服务器基于上述目标数据库发送的上述目标查询数据进行编译得到的;上述显示单元用于至少基于上述数字证书,将上述动态语法前端脚本编译为前端展示页面,并将上述前端展示页面显示在上述客户端浏览器上。在该实施例中,Web服务器在接收到目标数据库的目标查询数据的情况下,将目标查询数据编译为自定义前端脚本,再基于数字证书,将自定义前端脚本编译为前端展示页面,这样实现了对前端展示页面的动态加密,这样可以进一步地抵御XSS注入攻击和SQL注入攻击。
[0074] 为了较为简单地得到动态语法前端脚本,本申请的再一种实施例中,上述接收单元包括第二控制模块,用于控制自定义前端脚本解释器根据上述数字证书,将上述自定义前端脚本编译为上述动态语法前端脚本,上述自定义前端脚本解释器为基于上述数字证书,将上述自定义前端脚本编译为上述动态语法前端脚本的插件。
[0075] 具体地,上述的实施例中,上述自定义前端脚本解释器基于数字证书,将目标查询数据编译为动态的自定义前端脚本。
[0076] 本申请的一种实施例中,上述显示单元包括第三控制模块和第四控制模块,其中,上述第三控制模块用于控制动态前端语法解释器至少基于上述数字证书,生成动态前端解析规则;上述第四控制模块用于控制上述动态前端语法解释器根据上述动态前端解析规则,将上述动态语法前端脚本编译为上述前端展示页面,上述动态前端语法解释器为基于上述动态前端解析规则,将上述动态语法前端脚本编译为上述前端展示页面的插件。在该实施例中,动态前端语法解释器根据动态前端解析规则,将动态语法前端脚本编译为前端展示页面,即标准的Html和js脚本,这样不仅实现了对目标查询语句的加密处理,还实现了较为准确地在客户端浏览器上展示前端展示页面。
[0077] 本申请的一种具体的实施例中,可以根据数字证书和动态前端语法库,生成动态前端解析规则。其中,上述动态前端语法库为一个可随时更新且可以提供若干个前端语法规则的规则库。
[0078] 本申请的一种具体的实施例中,如图4所示,在Web服务器100与客户端浏览器500之间分别设置自定义前端脚本解释器600和动态前端语法解释器700。其中,自定义前端脚本解释器600根据上述数字证书,将Web服务器100编译得到的自定义前端脚本再次编译为动态语法前端脚本。动态前端语法解释器700基于数字证书,生成动态前端解析规则,并基于动态前端解析规则,将动态语法前端脚本编译为前端展示页面。即实现了对目标查询数据进行动态地加密,进一步地实现了可以抵御XSS注入攻击和SQL注入攻击。
[0079] 在实际的应用过程中,为了进一步地提高系统的安全性,上述动态查询语法解释器、上述自定义查询脚本解释器、上述自定义前端脚本解释器以及上述动态前端语法解释器,即可以统称为浏览器插件,可直接作为定制浏览器发布给特定的客户端人员使用。
[0080] 具体地,现有技术中的目标数据库和Web服务器中,Web服务器直接将SQL查询语句发送给目标数据库;客户端浏览器的前端脚本也是直接通过从Web服务器获得的js脚本,这样的结构模式是产生SQL注入攻击和XSS攻击的根源。故本申请中在Web服务器和目标数据库之间分别设置了动态查询语法解释器和自定义查询脚本解释器,从而实现了将查询语句编译动态的SQL查询语句。在Web服务器和客户端浏览器之间分别设置了自定义前端脚本解释器和动态前端语法解释器,从而实现了在将目标查询语句编译动态的前端脚本。本申请的攻击防御方法将应用程序层的查询语句、前端页面的脚本进行了动态化的语法处理,并进行了非对称的混淆、加密和加盐等处理,实现将当前客户端浏览器的任何的查询请求和前端页面脚本全部自定义为动态脚本,避免了攻击者按照现有通用脚本进行攻击的可能性,从而解决了现有技术中难以对XSS攻击进行防御的问题。
[0081] 上述攻击防御装置包括处理器和存储器,上述接收单元、生成单元和查询单元等均作为程序单元存储在存储器中,由处理器执行存储在存储器中的上述程序单元来实现相应的功能。
[0082] 处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个或以上,通过调整内核参数来解决现有技术中难以对XSS攻击进行防御的问题。
[0083] 存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM),存储器包括至少一个存储芯片。
[0084] 本发明实施例提供了一种计算机可读存储介质,其上存储有程序,该程序被处理器执行时实现上述攻击防御方法。
[0085] 本发明实施例提供了一种处理器,上述处理器用于运行程序,其中,上述程序运行时执行上述攻击防御方法。
[0086] 本申请的一种典型的实施例中,还提供了一种攻击防御系统,该攻击防御系统包括攻击防御装置、Web服务器和目标数据库。其中,上述攻击防御装置用于执行任意一种上述的攻击防御方法;上述Web服务器与上述攻击防御装置通信;上述目标数据库与上述Web服务器通信。
[0087] 上述的攻击防御系统包括攻击防御装置,上述攻击防御装置用于执行任意一种上述的攻击防御方法。上述的攻击防御方法中,首先,接收由Web服务器发送的基于随机生成的客户端浏览器的数字证书而生成的语法解析规则;然后,基于语法解析规则和查询请求对应的查询语句,对上述查询语句进行编译(也可以称之为解释),得到自定义查询脚本;最后,至少将自定义查询脚本发送至目标数据库,从而使得目标数据库在接收到自定义查询脚本的情况下,至少根据自定义查询脚本进行查询,得到目标查询数据。在本申请的攻击防御方法中,根据Web服务器发送的语法解析规则,对查询语句进行编译,得到自定义查询脚本,即实现了通过语法解析规则,对查询语句进行加密,得到动态的自定义查询脚本,这样保证了得到的自定义查询脚本的安全性较高。由于是基于语法解析规则,对对应的查询语句进行编译,得到自定义查询脚本,这样使得从前端页面的注入的XSS攻击代码无法被执行,从而可以避免XSS注入攻击,进而解决了现有技术中难以对XSS攻击进行防御的问题。
[0088] 本发明实施例提供了一种设备,设备包括处理器、存储器及存储在存储器上并可在处理器上运行的程序,处理器执行程序时实现至少以下步骤:
[0089] 步骤S101,接收由Web服务器发送的语法解析规则,上述语法解析规则为上述Web服务器在接收到客户端浏览器发送的查询请求的情况下,基于随机生成的上述客户端浏览器的数字证书而生成动态的语法解析规则;
[0090] 步骤S102,至少根据上述语法解析规则和上述查询请求对应的查询语句,生成自定义查询脚本;
[0091] 步骤S103,至少将上述自定义查询脚本发送至目标数据库,使得上述目标数据库根据上述自定义查询脚本进行查询,得到目标查询数据。
[0092] 本文中的设备可以是服务器、PC、PAD、手机等。
[0093] 本申请还提供了一种计算机程序产品,当在数据处理设备上执行时,适于执行初始化有至少如下方法步骤的程序:
[0094] 步骤S101,接收由Web服务器发送的语法解析规则,上述语法解析规则为上述Web服务器在接收到客户端浏览器发送的查询请求的情况下,基于随机生成的上述客户端浏览器的数字证书而生成动态的语法解析规则;
[0095] 步骤S102,至少根据上述语法解析规则和上述查询请求对应的查询语句,生成自定义查询脚本;
[0096] 步骤S103,至少将上述自定义查询脚本发送至目标数据库,使得上述目标数据库根据上述自定义查询脚本进行查询,得到目标查询数据。
[0097] 为了本领域技术人员能够更加清楚地了解本申请的技术方案,以下将结合具体的实施例来说明本申请的技术方案和技术效果。
[0098] 实施例
[0099] 如图6所示,涉及一种攻击防御方法。具体地,客户端浏览器500将查询请求发送至Web服务器100,Web服务器100在接收到查询请求的情况下,基于CA服务器101发送的数字证书和动态语法库800生成语法解析规则。动态查询语法解释器200根据语法解析规则,将查询语句编译为自定义查询脚本。自定义查询脚本解释器300,将自定义查询脚本编译为标准SQL查询语言,并将标准SQL查询语言发送至目标数据库400,使得上述目标数据库400根据自定义查询脚本进行查询,得到目标查询数据。Web服务器100将接收到的目标数据库400发送的目标查询数据编译为自定义前端脚本。自定义前端脚本解释器600根据数字证书,将自定义前端脚本编译为动态语法前端脚本。动态前端语法解释器700基于CA服务器101发送的数字证书和动态前端语法库900,生成动态前端解析规则,并根据上述动态前端解析规则,将上述动态语法前端脚本编译为上述前端展示页面,以将前端展示页面显示在客户端浏览器500上。
[0100] 在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
[0101] 在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如上述单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
[0102] 上述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0103] 另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0104] 上述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例上述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read‑Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
[0105] 从以上的描述中,可以看出,本申请上述的实施例实现了如下技术效果:
[0106] 1)、本申请的攻击防御方法中,首先,接收由Web服务器发送的基于随机生成的客户端浏览器的数字证书而生成的语法解析规则;然后,基于语法解析规则和查询请求对应的查询语句,对上述查询语句进行编译(也可以称之为解释),得到自定义查询脚本;最后,至少将自定义查询脚本发送至目标数据库,从而使得目标数据库在接收到自定义查询脚本的情况下,至少根据自定义查询脚本进行查询,得到目标查询数据。在本申请的攻击防御方法中,根据Web服务器发送的语法解析规则,对查询语句进行编译,得到自定义查询脚本,即实现了通过语法解析规则,对查询语句进行加密,得到动态的自定义查询脚本,这样保证了得到的自定义查询脚本的安全性较高。由于是基于语法解析规则,对对应的查询语句进行编译,得到自定义查询脚本,这样使得从前端页面的注入的XSS攻击代码无法被执行,从而可以避免XSS注入攻击,进而解决了现有技术中难以对XSS攻击进行防御的问题。
[0107] 2)、本申请攻击防御装置中,接收单元用于接收由Web服务器发送的基于随机生成的客户端浏览器的数字证书而生成的语法解析规则;生成单元用于基于语法解析规则和查询请求对应的查询语句,对上述查询语句进行编译(也可以称之为解释),得到自定义查询脚本;查询单元用于至少将自定义查询脚本发送至目标数据库,从而使得目标数据库在接收到自定义查询脚本的情况下,至少根据自定义查询脚本进行查询,得到目标查询数据。在本申请的攻击防御方法中,根据Web服务器发送的语法解析规则,对查询语句进行编译,得到自定义查询脚本,即实现了通过语法解析规则,对查询语句进行加密,得到动态的自定义查询脚本,这样保证了得到的自定义查询脚本的安全性较高。由于是基于语法解析规则,对对应的查询语句进行编译,得到自定义查询脚本,这样使得从前端页面的注入的XSS攻击代码无法被执行,从而可以避免XSS注入攻击,进而解决了现有技术中难以对XSS攻击进行防御的问题。
[0108] 3)、本申请的攻击防御系统包括攻击防御装置,上述攻击防御装置用于执行任意一种上述的攻击防御方法。上述的攻击防御方法中,首先,接收由Web服务器发送的基于随机生成的客户端浏览器的数字证书而生成的语法解析规则;然后,基于语法解析规则和查询请求对应的查询语句,对上述查询语句进行编译(也可以称之为解释),得到自定义查询脚本;最后,至少将自定义查询脚本发送至目标数据库,从而使得目标数据库在接收到自定义查询脚本的情况下,至少根据自定义查询脚本进行查询,得到目标查询数据。在本申请的攻击防御方法中,根据Web服务器发送的语法解析规则,对查询语句进行编译,得到自定义查询脚本,即实现了通过语法解析规则,对查询语句进行加密,得到动态的自定义查询脚本,这样保证了得到的自定义查询脚本的安全性较高。由于是基于语法解析规则,对对应的查询语句进行编译,得到自定义查询脚本,这样使得从前端页面的注入的XSS攻击代码无法被执行,从而可以避免XSS注入攻击,进而解决了现有技术中难以对XSS攻击进行防御的问题。
[0109] 以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。