CN110162974B - 数据库攻击防御方法及系统 - Google Patents

数据库攻击防御方法及系统 Download PDF

Info

Publication number
CN110162974B
CN110162974B CN201910451329.2A CN201910451329A CN110162974B CN 110162974 B CN110162974 B CN 110162974B CN 201910451329 A CN201910451329 A CN 201910451329A CN 110162974 B CN110162974 B CN 110162974B
Authority
CN
China
Prior art keywords
database
module
database operation
code
user
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.)
Active
Application number
CN201910451329.2A
Other languages
English (en)
Other versions
CN110162974A (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.)
Zhengzhou Angshi Information Technology Co ltd
Original Assignee
Zhengzhou Angshi Information Technology 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 Zhengzhou Angshi Information Technology Co ltd filed Critical Zhengzhou Angshi Information Technology Co ltd
Priority to CN201910451329.2A priority Critical patent/CN110162974B/zh
Publication of CN110162974A publication Critical patent/CN110162974A/zh
Application granted granted Critical
Publication of CN110162974B publication Critical patent/CN110162974B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/562Static detection
    • G06F21/563Static detection by source code analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database

Abstract

本发明提供了数据库攻击防御方法及相关设备,具体地,获取待发送至数据库模块的数据库操作代码;数据库操作代码中包含用户输入的操作相关参数;对数据库操作代码进行代码解析,以确定数据库操作代码中包含的预设可执行代码;使用与解析器模块对应的加密规则加密预设可执行代码;将加密后的预设可执行代码与用户输入的操作相关参数进行拼接,得到拼接语句;将拼接语句发送至数据库模块,以使数据库模块执行拼接语句中的加密数据得到数据库操作结果。该方法仅对系统中预设的可执行代码进行加密,这样数据库在执行拼接语句时,只执行加密的可执行代码,并不执行用户输入的操作相关参数,从而避免恶意程序通过操作相关参数对数据库的攻击。

Description

数据库攻击防御方法及系统
技术领域
本发明涉及网络安全技术领域,特别是涉及一种数据库攻击防御方法及系统。
背景技术
在互联网环境下,数据库系统中可以存储业务信息,用户可以通过客户端向数据库系统发送对数据库的操作请求,如业务信息查询请求、业务信息修改请求等。数据库系统接收到操作请求后,执行与操作请求对应的数据库操作步骤,从而得到操作结果返回给用户。
然而,一些恶意程序为了非法从数据库系统中获取业务信息,可以对数据库系统进行网络攻击行为。网络攻击的一种具体手段是,恶意程序利用用户客户端的漏洞,在客户端发送的操作请求中注入恶意的数据库操作语句,数据库系统在处理操作请求时,会执行被恶意注入的数据库操作语句,从而遭受网络攻击。
因此,需要一种防御方法,来防止数据库系统遭受网络攻击行为,进而提高数据库系统的安全性。
发明内容
有鉴于此,本发明提供了一种数据库攻击防御方法,以提高数据库系统安全性。另外,本发明还提供了一种数据库攻击防御系统,用以保证所述方法在实际中的应用及实现。
为实现所述目的,本发明提供的技术方案如下:
第一方面,本发明提供了一种数据库攻击防御方法,应用于解析器模块,该方法包括:
获取待发送至数据库模块的数据库操作代码;其中所述数据库操作代码中包含用户输入的操作相关参数;
对所述数据库操作代码进行代码解析,以确定所述数据库操作代码中包含的预设可执行代码;
使用与所述解析器模块对应的加密规则加密所述预设可执行代码;
将加密后的预设可执行代码与用户输入的操作相关参数进行拼接,得到拼接语句;
将所述拼接语句发送至数据库模块,以使所述数据库模块执行所述拼接语句中的加密数据得到数据库操作结果。
第二方面,本发明提供了一种数据库攻击防御方法,应用于防御控制设备,该方法包括:
接收多个数据库执行设备发送的数据库操作结果;其中,数据库执行设备中包含解析器模块及数据库模块,且数据库操作结果是由各个数据库执行设备通过如下步骤得到的:解析器模块获取待发送至数据库模块的数据库操作代码;其中所述数据库操作代码中包含用户输入的操作相关参数;对所述数据库操作代码进行代码解析,以确定所述数据库操作代码中包含的预设可执行代码;使用与所述解析器模块对应的加密规则加密所述预设可执行代码;将加密后的预设可执行代码与用户输入的操作相关参数进行拼接,得到拼接语句;将所述拼接语句发送至数据库模块,以使数据库模块执行所述拼接语句后得到数据库操作结果;
比对多个所述数据库操作结果是否一致,得到比对结果;
根据比对结果,确定是否存在对数据库模块的网络攻击行为。
第三方面,本发明提供了一种数据库攻击防御装置,包括:
数据库操作代码获取模块,用于获取待发送至数据库模块的数据库操作代码;其中所述数据库操作代码中包含用户输入的操作相关参数;
数据库操作代码解析模块,用于对所述数据库操作代码进行代码解析,以确定所述数据库操作代码中包含的预设可执行代码;
预设可执行代码加密模块,用于使用与所述解析器模块对应的加密规则加密所述预设可执行代码;
拼接语句生成模块,用于将加密后的预设可执行代码与用户输入的操作相关参数进行拼接,得到拼接语句;
拼接语句发送模块,用于将所述拼接语句发送至数据库模块,以使所述数据库模块执行所述拼接语句中的加密数据得到数据库操作结果。
第四方面,本发明提供了一种数据库攻击防御装置,应用于防御控制设备,该方法装置:
数据库操作结果接收模块,用于接收多个数据库执行设备发送的数据库操作结果;其中,数据库执行设备中包含解析器模块及数据库模块,且数据库操作结果是由各个数据库执行设备通过如下步骤得到的:解析器模块获取待发送至数据库模块的数据库操作代码;其中所述数据库操作代码中包含用户输入的操作相关参数;对所述数据库操作代码进行代码解析,以确定所述数据库操作代码中包含的预设可执行代码;使用与所述解析器模块对应的加密规则加密所述预设可执行代码;将加密后的预设可执行代码与用户输入的操作相关参数进行拼接,得到拼接语句;将所述拼接语句发送至数据库模块,以使数据库模块执行所述拼接语句后得到数据库操作结果;
数据库操作结果比对模块,用于比对多个所述数据库操作结果是否一致,得到比对结果;
网络攻击行为检测模块,用于根据比对结果,确定是否存在对数据库模块的网络攻击行为。
第五方面,本发明提供了一种数据库攻击防御系统,包括:防御控制设备及数据库执行设备的集群;其中,所述防御控制设备包括:分发器、控制选择器以及表决器;所述数据库执行设备包括:解析器模块、加密模块及数据库模块;
控制选择器,用于按照预设周期向分发器发送选择指令;
分发器,用于接收用户的数据库操作请求;其中所述数据库操作请求中包含用户输入的操作相关参数;每当接收到控制选择器发送的选择指令后,在数据库执行设备的集群中,确定多个目标数据库执行设备;以及将所述数据库操作请求发送至各个所述目标数据库执行设备的解析器模块;
解析器模块,用于依据所述数据库操作请求生成待发送至数据库模块的数据库操作代码;对所述数据库操作代码进行代码解析,以确定所述数据库操作代码中包含的预设可执行代码;将预设可执行代码发送至与所述解析器模块部署在同一数据库执行设备上的加密模块;
加密模块,用于使用预设对应的加密规则加密所述预设可执行代码;将加密后的预设可执行代码与用户输入的操作相关参数进行拼接,得到拼接语句;将所述拼接语句发送至数据库模块;
数据库模块,用于执行所述拼接语句后得到数据库操作结果;将数据库操作结果发送至所述表决器;
表决器,用于比对多个数据库操作结果是否一致,得到比对结果;以及根据比对结果,确定是否存在对数据库模块的网络攻击行为。
由以上技术方案可知,本发明提供了一种数据库攻击防御方法,该方法可以获取待发送至数据库模块的数据库操作代码;其中数据库操作代码中包含用户输入的操作相关参数;对数据库操作代码进行代码解析,以确定数据库操作代码中包含的预设可执行代码;使用与解析器模块对应的加密规则加密预设可执行代码;将加密后的预设可执行代码与用户输入的操作相关参数进行拼接,得到拼接语句;将拼接语句发送至数据库模块,以使数据库模块执行拼接语句中的加密数据得到数据库操作结果。该方法通过解析器模块仅对系统中预设的可执行代码进行加密,并不对用户输入的操作相关参数进行加密,这样数据库在执行该语句过程中,只会执行加密的可执行代码,而并不执行用户输入的操作相关参数,从而避免恶意程序通过操作相关参数对数据库的攻击。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明提供的数据库攻击防御方法流程图;
图2为本发明提供的数据库攻击防御系统结构示意图;
图3为本发明提供的解析器模块具体实施示意图;
图4为本发明提供的另一种数据库攻击防御方法流程图;
图5为本发明提供的数据库攻击防御装置的一个结构示意图;
图6为本发明提供的数据库攻击防御装置的另一结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
数据库用于存储数据,合法用户可以从数据库中读取所需的数据。但是,恶意用户可能通过注入非法SQL(Structured Query Language,结构化查询语言)的方式,对数据库进行恶意攻击,攻击方式包括从数据库中窃取数据等。
具体例如,数据库可以对所存的数据设置权限等级,每个权限等级对应的数据开发程度都不一样,用户访问数据库,对数据库中的数据进行操作时,数据库先获取用户的权限等级,在判断用户的权限等级是否能够操作该数据,若用户权限等级不能够操作该数据,数据库会以弹窗的形式提醒用户,并拒绝用户所发送的操作请求;若用户权限等级能够操作该数据,则数据库将该数据发送给用户。
但是,存在一些恶意用户,该类用户通过非法手段获取权限等级,即得到的权限等级与该类用户不匹配,导致数据库中的数据泄露,即数据库被攻击。该类用户将具有攻击行为的代码植入数据访问请求中,该具有攻击行为的代码是操作更高权限数据的代码,恶意用户将该代码伪装成数据库所能执行的代码,数据库在处理数据访问请求时,直接执行该代码,并将该代码所求结果返回给用户,导致数据库中的数据被暴库。
又如,在当今网络环境下,网络服务系统是目前最重要的互联网服务载体之一,企业或政府机关等单位可以在网络服务系统上为不同用户提供方便快捷的服务,其中有一项功能是为用户提供各种查询服务,用户可以通过客户端查询后台数据库中权限内的数据。但由于用户身份识别与用户输入弱验证等漏洞,一些不法分子可以利用这些漏洞进行恶意的SQL注入,以获取后台数据库中权限外的数据,甚至篡改或删除数据。
为此,参见图1,本发明实施例提供了一种数据库攻击防御方法,以避免恶意用户通过操作相关参数攻击数据库,该方法应用于数据库攻击防御系统。参见图2,数据库攻击防御系统可以包括:防御控制设备20及包括多个数据库执行设备21的集群;其中,防御控制设备20包括:分发器201、控制选择器202以及表决器203;数据库执行设备21包括:解析器模块211、加密模块212及数据库模块213。
需要明的是,数据库攻击防御方法具体应用于该系统中的解析器模块211,当然,应用数据库攻击防御方法的解析器模块也并不局限于设置在上述结构形式的系统中。
如图1所示,该方法可以具体包括步骤S101-S105。
S101:获取待发送至数据库模块的数据库操作代码;其中数据库操作代码中包含用户输入的操作相关参数。
具体地,用户通过平台如使用PHP(Hypertext Preprocessor,超文本预处理器)编程语言生成的平台,向数据库模块发起操作请求。平台可以指上述的数据库攻击防御系统。
操作请求如数据查询请求、数据删除请求等等,操作请求中包含用户输入的操作相关参数,操作相关参数与操作请求的类型相关。例如在操作请求为数据查找请求的情况下,操作相关参数包括所查询数据的范围;又如在操作请求为数据删除请求的情况下,操作相关参数包括所删除数据的范围。需要说明的是,攻击程序可能将攻击代码伪装为操作相关参数,包含在操作请求中。也就是说,操作请求中可能包含有攻击代码,也可能只包含正常的操作相关参数。
平台将用户输入的操作相关参数与平台中的数据库操作代码相结合,得到待发送至数据库模块的数据库操作代码,并将数据库操作代码发送给数据库模块。其中,在发送至数据库模块之前,先由防御控制设备接收该请求,并将该请求发送至若干个数据库执行设备中,由数据库执行设备中的解析器模块接收该数据库操作代码。需要说明的是,平台的数据库操作代码中包含开发人员预先设置可执行代码,可执行代码用于实现操作请求对数据库模块的操作。
S102:对数据库操作代码进行代码解析,以确定数据库操作代码中包含的预设可执行代码。
具体地,解析器模块接收到数据库操作代码后,可以通过设置于解析器模块内部的程序,将数据库操作代码中用户输入的操作相关参数与平台中预设的数据库操作代码区分开来,并从预设的数据库操作代码中确定出预先设置的可执行代码,从而完成对数据库操作代码的代码解析。其中预先设置的可执行代码可以包括对数据库模块进行操作的关键字及函数。
S103:使用与解析器模块对应的加密规则加密预设可执行代码。
具体地,加密规则可以由加密模块提供。其中,加密规则可以是多种实现方式,如生成加密钥。解析器模块将可执行代码与加密模块生成的加密钥进行混淆,得到加密的可执行代码。其中,混淆方式不做具体说明,可以是任意形式的混淆。解析器模块与加密规则是对应的,也就是说,对于不同的数据库执行设备的解析器模块,所对应的加密规则可以是不一样的。这样,即使恶意程序窃取到某个或某些解析器模块使用的加密规则,但不能应用于所有的解析器模块,从而进一步提高了数据库的安全性。
需要说明的是,解析器模块仅对数据库操作代码中的可执行代码进行加密。
S104:将加密后的预设可执行代码与用户输入的操作相关参数进行拼接,得到拼接语句。
具体地,将加密后的预设可执行代码与用户输入的操作相关参数重新进行拼接,得到能够对数据库模块进行操作的拼接语句。
S105:将拼接语句发送至数据库模块,以使数据库模块执行拼接语句中的加密数据得到数据库操作结果。
具体地,将拼接语句发送至数据库模块,由数据库模块执行拼接语句中的操作语句,以得到与操作语句对应的数据库操作结果。需要说明的是,用户输入的操作相关参数未进行加密处理,因此数据库模块无法识别该操作相关参数,将操作相关参数视为普通的字符串,并不执行。
由上述技术方案可知,本发明实施例提供了一种数据库攻击防御方法,该方法通过获取待发送至数据库模块的数据库操作代码;其中数据库操作代码中包含用户输入的操作相关参数;对数据库操作代码进行代码解析,以确定数据库操作代码中包含的预设可执行代码;使用与解析器模块对应的加密规则加密可执行代码;将加密后的可执行代码与用户输入的操作相关参数进行拼接,得到拼接语句;将拼接语句发送至数据库模块,以使数据库模块执行拼接语句中的加密数据得到数据库操作结果。该方法通过解析器模块对开发人员预设的可执行代码进行加密,数据库在执行拼接语句过程中,只执行加密的可执行代码,而并不执行用户输入的操作相关参数,从而避免恶意程序通过操作相关参数对数据库的攻击。
需要说明的是,对预设可执行代码的提取加密过程可以称为随机化过程。
现有技术中存在一种数据库防御攻击的方法,即开发人员人工编写提取规则,使用该区分规则从数据库操作代码中,提取预设的可执行代码。这种提取预设可执行代码的方式,是一种静态提取方法。人工总结预设可执行代码所具有的特征,并根据特征编写的区分规则,从而提取规则在数据库操作代码中提取具有人工总结的特征的代码作为预设可执行代码。但是,人工总结的特征可能并不准确,因此所提取的预设可执行代码不够准确,进而可能所加密的代码不完全甚至是非预设可执行代码。一旦出现误随机化的情况,则整个程序的功能将会出现不可预测的风险,严重时会导致安全系统瘫痪。
而本发明方案是在运行安全系统(即上述中的数据库防御攻击系统)的过程中,该系统中的解析器模块如PHP解析器模块在运行过程中,会使用系统自带的解析规则对数据库操作代码进行代码解析,解析结果在正常情况下是准确无误的。本发明使用到了解析器模块自身具有的代码解析功能,来确定数据库操作代码中的预设可执行代码,无需由开发人员人工编写提取规则进行提取,提取结果更加准确。解析器模块,将可执行代码与用户输入的操作相关参数区分开来后,仅对可执行代码进行加密,将加密后的可执行代码与用户输入的操作相关参数拼接,发送至数据库模块,数据库模块只执行具有加密的可执行代码,并根据预先设置好的解密规则,将加密的可执行代码进行解密,并执行解密后的可执行代码,以得到数据库操作结果。
在一个示例中,步骤S102:对数据库操作代码进行代码解析,以确定数据库操作代码中包含的预设可执行代码,具体包括如下步骤:
使用钩子函数确定所有的预设数据库操作函数;对数据库操作代码进行代码解析,以得到数据库操作代码中包含的数据库操作函数;若解析得到的数据库操作函数中包含预设数据库操作函数,则从包含的预设数据库操作函数中提取可执行代码,并将提取到的可执行代码确定为预设可执行代码。
具体地,参见图3,解析器模块确定预设可执行代码,主要由解析器模块中的钩子函数和相关插件来完成的。
如图3所示,解析器模块接收由防御控制设备发送过来的待发送至数据库模块的数据库操作代码,并利用钩子函数监控系统中所有的预设数据库操作函数,将预设数据库操作函数的信息发送至相关插件,由相关插件将包含在数据库操作代码中的预设数据库操作函数,从数据库操作代码中提取出来。
提取过程可以是:根据钩子函数发送来的预设数据库操作函数的信息,在数据库操作代码中确定出数据库操作函数,并为数据库操作函数设置识别标识,用于区分操作相关参数和数据库操作函数。该数据库操作函数中包含有属于预设数据库操作函数的对数据库进行操作的代码,比如操作语句的关键字或函数,将关键字及函数从数据库操作函数中提取出来,作为可执行代码。需要说明的是,预设数据库操作函数是多种数据库操作函数的集合,包含有多种对数据库进行操作的关键字及函数。其中,对数据库进行操作可以是查询数据库中的数据、可以是读取数据库中的数据、还可以是修改数据库中的数据,具体操作是根据所接收的数据库操作代码中的数据库操作函数来决定。
另外,参见图4,本发明实施例提供了一种数据库攻击防御方法,该方法应用于数据库攻击防御系统。参见图2,该系统可以包括:防御控制设备及数据库执行设备的集群;其中,防御控制设备包括:分发器、控制选择器以及表决器;数据库执行设备包括:解析器模块、加密模块及数据库模块。数据库攻击防御方法可以具体应用于表决器。
见图4,数据库攻击防御方法可以具体包括步骤S401-S404。
在执行步骤S401之前,防御控制设备先接收用户的数据库操作请求;其中数据库操作请求中包含用户输入的操作相关参数;在数据库执行设备集群中,确定多个目标数据库执行设备;将数据库操作请求发送至各个目标数据库执行设备,以使目标数据库执行设备依据数据库操作请求生成待发送至数据库模块的数据库操作代码。
具体地,由上述可知,防御控制设备包括:分发器、控制选择器以及表决器。其中,分发器接收待发送至数据库模块的数据库操作请求,并其发送至控制选择器;控制选择器接收到该信息后,为该数据库操作请求确定用于执行该数据库操作请求的数据库执行设备。例如,控制选择器获取当前时刻值,并在当前时刻值满足预设周期时间点的情况下,随机选择多个数据库执行设备作为目标数据库执行设备,并将随机选择的结果发送给分发器及表决器。分发器接收到该选择结果后,将待发送至数据库模块的数据库操作请求发送给所选择的数据库执行设备。例如:控制选择器读取当前时间为10:00分,该时刻值下,选择若干个(大于或等于三个)数据库执行设备,分发器接收到该选择结果后,将数据库操作代码发送给所选择的数据库执行设备。
其中,数据库执行设备是从若干个数据库执行设备中随机选取得到的,且选取数量可以大于或等于三,每次选取的数量可能不等。每预设时间间隔(也称为预设周期)内更新一次数据库执行设备,例如,预设周期为1小时,则在10:00分时随机选取数据库执行设备1、数据库执行设备2及数据库执行设备3后,在11:00分再进行一次随机选取,随机选取的可能是数据库执行设备4、数据库执行设备5及数据库执行设备6。
数据库执行设备根据待发送至数据库模块的数据库操作代码,生成对应的数据库操作结果,将所有的数据库操作结果,返回给防御控制设备中的表决器。其中,生成数据库操作结果的过程可参照上述实施例,此处不再赘述。
S401:接收多个数据库执行设备发送的数据库操作结果;其中,数据库执行设备中包含解析器模块及数据库模块,且数据库操作结果是由各个数据库执行设备通过如下步骤得到的:解析器模块获取待发送至数据库模块的数据库操作代码;其中数据库操作代码中包含用户输入的操作相关参数;对数据库操作代码进行代码解析,以确定数据库操作代码中包含的预设可执行代码;使用与解析器模块对应的加密规则加密预设可执行代码;将加密后的预设可执行代码与用户输入的操作相关参数进行拼接,得到拼接语句;将拼接语句发送至数据库模块,以使数据库模块执行拼接语句后得到数据库操作结果。
具体地,上述中,控制选择器选择若干个(大于或等于三个)数据库执行设备,分发器将用户请求分别发送至所选择的所有数据库执行设备中,所选择的所有数据库执行设备在生成数据库操作结果之后,将数据库操作结果均发送至防御控制设备中的表决器,由该表决器接收所有数据库执行设备在生成数据库操作结果。
S402:比对多个数据库操作结果是否一致,得到比对结果。
具体地,表决器接收到多个数据库操作结果后,进行比对,其过程是比对多个数据库操作结果的是否一致,并得到对应的比对结果。
S403:根据比对结果,确定是否存在对数据库模块的网络攻击行为。
具体地,若比对结果是多个数据库操作结果一致,则表示用户输入的操作相关参数中不存在攻击数据库执行设备的代码,即攻击代码,也表示操作相关参数中不存在攻击行为。
若比对结果为不完全一致,则统计每种数据库操作结果中包含的数据库操作结果的个数;确定数据库操作结果个数中的最小值所对应的目标数据库操作结果;将发送目标数据库操作结果的数据库执行设备确定为遭受网络攻击行为的数据库执行设备。
具体地,若比对结果不完全一致,即说明至少有一个数据库执行设备的数据库操作结果出现异常,这种异常可能是数据库执行设备遭受攻击后出现的异常。由于在实际应用中,经过试验观察发现遭受攻击数据库执行设备可能是少数,也就是说,只有最少量的数据库操作结果是异常的结果。因此,此种情况下,需要获得每个数据库执行设备的数据库操作结果,并将相同的数据库操作结果归为一类,并统计每种数据库操作结果的个数,进而将个数最少的数据库操作结果认定为遭受攻击的数据库执行设备所发送的数据库操作结果。为了便于描述,可以将这类数据库操作结果称为为目标数据库操作结果。在确定目标数据库操作结果后,进而可以确定该目标数据库操作结果对应的数据库执行设备遭到网络攻击。
由上述技术方案可知,本发明实施例提供了一种数据库攻击防御方法,应用于防御控制设备,该方法通过接收多个数据库执行设备发送的数据库操作结果;其中,数据库执行设备中包含解析器模块及数据库模块,且数据库操作结果是由各个数据库执行设备通过如下步骤得到的:解析器模块获取待发送至数据库模块的数据库操作代码;其中所述数据库操作代码中包含用户输入的操作相关参数;对所述数据库操作代码进行代码解析,以确定所述数据库操作代码中包含的预设可执行代码;使用与所述解析器模块对应的加密规则加密所述可执行代码;将加密后的可执行代码与用户输入的操作相关参数进行拼接,得到拼接语句;将所述拼接语句发送至数据库模块,以使数据库模块执行所述拼接语句后得到数据库操作结果;比对多个所述数据库操作结果是否一致,得到比对结果;根据比对结果,确定是否存在对数据库模块的网络攻击行为。该方法通过解析器模块对可执行代码进行加密,将加密后的可执行代码与用户输入的操作相关参数拼接成数据库执行的语句,而数据库在执行该语句过程中,只执行加密的可执行代码,而并不执行用户输入的操作相关参数,从而避免恶意用户通过操作相关参数攻击数据库。同时,在防御攻击的基础上,本发明提供的方法还可以根据数据库执行设备生成的数据库操作结果,判定数据库执行设备是否被恶意用户所攻击。
需要说明的是,每个数据库执行设备中都有对应的解析器模块、加密模块以及数据库模块,不同的数据库执行设备,对应解析器模块中的加密规则也不同,可以体现为每个数据库执行设备中加密模块所生成的加密规则(如加密钥)不同,恶意用户无法将全部的加密规则设置于操作相关参数中,该方法能够有效防止恶意用户通过攻击数据库执行设备来攻击数据库。
另外,恶意用户还会针对数据库执行设备进行攻击,以下将详细描述对这种攻击的检测过程。
在一个示例中,应用在表决器上的数据库攻击防御方法,还可以具体包括如下检测步骤,如下步骤可以在步骤S402之前执行。具体地,检测步骤如下所示包括:
判断发送数据库操作结果的数据库执行设备是否与目标数据库执行设备完全相同;若不相同,则确定存在对数据库执行设备的网络攻击行为;若完全相同,则执行比对多个数据库操作结果是否一致的步骤。
具体地,恶意程序对数据库执行设备的攻击方式有多种,如上文所述的恶意程序将具有攻击行为的代码植入用户输入的操作相关参数中的攻击方法,而本方案将操作相关参数作为普通字符串,不执行该操作相关参数,从而避免该攻击方式。另外,还有一种攻击方式是恶意程序伪装成目标数据库执行设备,并向表决器发送伪装的数据库操作结果,使表决器表决有误。
为此,本方案提供了一种数据库攻击防御方法,通过判断所有发送数据库操作结果的数据库执行设备是否与预先选择出的目标数据库执行设备相同,得到判断结果。若判断结果是:发送数据库操作结果的数据库执行设备与目标数据库执行设备完全相同,则表示发送数据库操作结果的数据库执行设备是正常的设备,并未遭受网络攻击,进而执行步骤S402中的比对。若判断结果是:发送数据库操作结果的数据库执行设备与目标数据库执行设备不完全相同,则表示发送数据库操作结果的数据库执行设备中的某设备遭受了网络攻击或者是被伪装的设备,进而可以结束流程。
另外,参见图2,本发明实施例提供了一种数据库攻击防御系统,具体包括:防御控制设20及数据库执行设备的集群21。
其中:防御控制设备20包括:分发器201、控制选择器202以及表决器203。
数据库执行设备包括:解析器模块211、加密模块212及数据库模块213。
控制选择器202,用于按照预设周期向分发器201发送选择指令。
分发器201,用于接收用户的数据库操作请求;其中数据库操作请求中包含用户输入的操作相关参数;每当接收到控制选择器202发送的选择指令后,在数据库执行设备的集群中,确定多个目标数据库执行设备;以及将数据库操作请求发送至各个目标数据库执行设备的解析器模块211。
解析器模块211,用于依据数据库操作请求生成待发送至数据库模块213的数据库操作代码;对数据库操作代码进行代码解析,以确定数据库操作代码中包含的预设可执行代码;将预设可执行代码发送至与解析器模块211部署在同一数据库执行设备上的加密模块212。
加密模块212,用于使用预设对应的加密规则加密预设可执行代码;将加密后的预设可执行代码与用户输入的操作相关参数进行拼接,得到拼接语句;将拼接语句发送至数据库模块213。
数据库模块213,用于执行拼接语句后得到数据库操作结果;将数据库操作结果发送至表决器203。
表决器203,用于比对多个数据库操作结果是否一致,得到比对结果;以及根据比对结果,确定是否存在对数据库模块213的网络攻击行为。
该系统通过解析器模块将数据库操作函数中的可执行代码进行加密,再将加密后的可执行代码与数据库操作函数结合,再与操作相关参数进行拼接得到拼接语句,将拼接语句发送至数据库接收模块,数据库接收该拼接语句后,执行包含加密的可执行代码的数据库操作函数,而操作相关参数作普通字符串处理,避免了恶意用户将攻击代码植入操作相关参数中,来攻击数据库模块,另外,该系统由多个数据库执行设备执行数据库操作代码,因此,能够得到多个数据库操作结果,由防御控制系统中的表决器来判断所有发送数据操作结果,从而确定出数据库操作代码中是否含有攻击代码,还可以检测所有发送数据库操作结果的数据库执行设备是否存在伪装的数据库执行设备,实现数据库攻击检测。
见图5,其示出了一种数据库攻击防御装置的结构。数据库攻击防御装置可以具体为解析器模块。如图5所示,该装置可以具体包括:数据库操作代码获取模块501、数据库操作代码解析模块502、预设可执行代码加密模块503、拼接语句生成模块504及拼接语句发送模块505。
数据库操作代码获取模块501,用于获取待发送至数据库模块的数据库操作代码;其中所述数据库操作代码中包含用户输入的操作相关参数。
数据库操作代码解析模块502,用于对所述数据库操作代码进行代码解析,以确定所述数据库操作代码中包含的预设可执行代码。
预设可执行代码加密模块503,用于使用与所述解析器模块对应的加密规则加密所述预设可执行代码。
拼接语句生成模块504,用于将加密后的预设可执行代码与用户输入的操作相关参数进行拼接,得到拼接语句。
拼接语句发送模块505,用于将所述拼接语句发送至数据库模块,以使所述数据库模块执行所述拼接语句中的加密数据得到数据库操作结果。
见图6,其示出了一种数据库攻击防御装置的结构。该装置可以应用在防御控制设备上,具体可以包括:数据库操作结果接收模块601、数据库操作结果比对模块602及网络攻击行为检测模块603。
数据库操作结果接收模块601,用于接收多个数据库执行设备发送的数据库操作结果;其中,数据库执行设备中包含解析器模块及数据库模块,且数据库操作结果是由各个数据库执行设备通过如下步骤得到的:解析器模块获取待发送至数据库模块的数据库操作代码;其中所述数据库操作代码中包含用户输入的操作相关参数;对所述数据库操作代码进行代码解析,以确定所述数据库操作代码中包含的预设可执行代码;使用与所述解析器模块对应的加密规则加密所述预设可执行代码;将加密后的预设可执行代码与用户输入的操作相关参数进行拼接,得到拼接语句;将所述拼接语句发送至数据库模块,以使数据库模块执行所述拼接语句后得到数据库操作结果。
数据库操作结果比对模块602,用于比对多个所述数据库操作结果是否一致,得到比对结果。
网络攻击行为检测模块603,用于根据比对结果,确定是否存在对数据库模块的网络攻击行为。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括上述要素的过程、方法、物品或者设备中还存在另外的相同要素。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

Claims (9)

1.一种数据库攻击防御方法,其特征在于,应用于解析器模块,该方法包括:
获取目标数据库执行设备依据数据库操作请求生成待发送至数据库模块的数据库操作代码,其中,当所述目标数据库执行设备接收到防御控制设备发送的数据库操作请求时,则依据所述数据库操作请求生成待发送至数据库模块的数据库操作代码,当所述防御控制设备接收到用户的数据库操作请求时,在数据库执行设备集群中,确定多个目标数据库执行设备,并将所述数据库操作请求发送至各个目标数据库执行设备中,所述数据库操作代码中包含用户输入的操作相关参数;
对所述数据库操作代码进行代码解析,以确定所述数据库操作代码中包含的预设可执行代码;
使用与所述解析器模块对应的加密规则加密所述预设可执行代码;
将加密后的预设可执行代码与用户输入的操作相关参数进行拼接,得到拼接语句;
将所述拼接语句发送至数据库模块,以使所述数据库模块执行所述拼接语句中的加密数据得到数据库操作结果。
2.根据权利要求1所述的数据库攻击防御方法,其特征在于,所述对所述数据库操作代码进行代码解析,以确定所述数据库操作代码中包含的预设可执行代码,包括:
使用钩子函数确定所有的预设数据库操作函数;
对所述数据库操作代码进行代码解析,以得到所述数据库操作代码中包含的数据库操作函数;
若解析得到的数据库操作函数中包含预设数据库操作函数,则从包含的预设数据库操作函数中提取可执行代码,并将提取到的可执行代码确定为预设可执行代码。
3.一种数据库攻击防御方法,其特征在于,应用于防御控制设备,该方法包括:
接收用户的数据库操作请求;其中所述数据库操作请求中包含用户输入的操作相关参数;
在数据库执行设备集群中,确定多个目标数据库执行设备;
将所述数据库操作请求发送至各个所述目标数据库执行设备,以使所述目标数据库执行设备依据所述数据库操作请求生成待发送至数据库模块的数据库操作代码;
接收多个数据库执行设备发送的数据库操作结果;其中,数据库执行设备中包含解析器模块及数据库模块,且数据库操作结果是由各个数据库执行设备通过如下步骤得到的:解析器模块获取待发送至数据库模块的数据库操作代码;其中所述数据库操作代码中包含用户输入的操作相关参数;对所述数据库操作代码进行代码解析,以确定所述数据库操作代码中包含的预设可执行代码;使用与所述解析器模块对应的加密规则加密所述预设可执行代码;将加密后的预设可执行代码与用户输入的操作相关参数进行拼接,得到拼接语句;将所述拼接语句发送至数据库模块,以使数据库模块执行所述拼接语句后得到数据库操作结果;
比对多个所述数据库操作结果是否一致,得到比对结果;
根据比对结果,确定是否存在对数据库模块的网络攻击行为。
4.根据权利要求3所述的数据库攻击防御方法,其特征在于,数据库执行设备的数量为至少三个;则该方法在得到比对结果之后还包括:
若比对结果为不完全一致,则统计每种数据库操作结果中包含的数据库操作结果的个数;
确定数据库操作结果个数中的最小值所对应的目标数据库操作结果;
将发送目标数据库操作结果的数据库执行设备确定为遭受网络攻击行为的数据库执行设备。
5.根据权利要求3所述的数据库攻击防御方法,其特征在于,在比对多个所述数据库操作结果是否一致之前,该方法还包括:
判断发送数据库操作结果的数据库执行设备是否与所述目标数据库执行设备完全相同;
若不相同,则确定存在对数据库执行设备的网络攻击行为;
若完全相同,则执行比对多个所述数据库操作结果是否一致的步骤。
6.根据权利要求3所述的数据库攻击防御方法,其特征在于,不同的数据库执行设备中,解析器模块对应的加密规则不同。
7.一种数据库攻击防御装置,其特征在于,应用于解析器模块,包括:
数据库操作代码获取模块,用于获取目标数据库执行设备依据数据库操作请求生成待发送至数据库模块的数据库操作代码,其中,当接收到用户的数据库操作请求时,在数据库执行设备集群中,确定多个目标数据库执行设备,将所述数据库操作请求发送至各个所述目标数据库执行设备,以使所述目标数据库执行设备依据所述数据库操作请求生成待发送至数据库模块的数据库操作代码,所述数据库操作代码中包含用户输入的操作相关参数;
数据库操作代码解析模块,用于对所述数据库操作代码进行代码解析,以确定所述数据库操作代码中包含的预设可执行代码;
预设可执行代码加密模块,用于使用与所述解析器模块对应的加密规则加密所述预设可执行代码;
拼接语句生成模块,用于将加密后的预设可执行代码与用户输入的操作相关参数进行拼接,得到拼接语句;
拼接语句发送模块,用于将所述拼接语句发送至数据库模块,以使所述数据库模块执行所述拼接语句中的加密数据得到数据库操作结果。
8.一种数据库攻击防御装置,其特征在于,应用于防御控制设备,包括 :
数据库操作结果接收模块,用于接收用户的数据库操作请求;其中所述数据库操作请求中包含用户输入的操作相关参数;在数据库执行设备集群中,确定多个目标数据库执行设备;将所述数据库操作请求发送至各个所述目标数据库执行设备,以使所述目标数据库执行设备依据所述数据库操作请求生成待发送至数据库模块的数据库操作代码;接收多个数据库执行设备发送的数据库操作结果;其中,数据库执行设备中包含解析器模块及数据库模块,且数据库操作结果是由各个数据库执行设备通过如下步骤得到的:解析器模块获取待发送至数据库模块的数据库操作代码;其中所述数据库操作代码中包含用户输入的操作相关参数;对所述数据库操作代码进行代码解析,以确定所述数据库操作代码中包含的预设可执行代码;使用与所述解析器模块对应的加密规则加密所述预设可执行代码;将加密后的预设可执行代码与用户输入的操作相关参数进行拼接,得到拼接语句;将所述拼接语句发送至数据库模块,以使数据库模块执行所述拼接语句后得到数据库操作结果;
数据库操作结果比对模块,用于比对多个所述数据库操作结果是否一致,得到比对结果;
网络攻击行为检测模块,用于根据比对结果,确定是否存在对数据库模块的网络攻击行为。
9.一种数据库攻击防御系统,其特征在于,包括:防御控制设备及数据库执行设备的集群;其中,所述防御控制设备包括:分发器、控制选择器以及表决器;所述数据库执行设备包括:解析器模块、加密模块及数据库模块;
控制选择器,用于按照预设周期向分发器发送选择指令;
分发器,用于接收用户的数据库操作请求;其中所述数据库操作请求中包含用户输入的操作相关参数;每当接收到控制选择器发送的选择指令后,在数据库执行设备的集群中,确定多个目标数据库执行设备;以及将所述数据库操作请求发送至各个所述目标数据库执行设备的解析器模块;
解析器模块,用于依据所述数据库操作请求生成待发送至数据库模块的数据库操作代码;对所述数据库操作代码进行代码解析,以确定所述数据库操作代码中包含的预设可执行代码;将预设可执行代码发送至与所述解析器模块部署在同一数据库执行设备上的加密模块;
加密模块,用于使用预设对应的加密规则加密所述预设可执行代码;将加密后的预设可执行代码与用户输入的操作相关参数进行拼接,得到拼接语句;将所述拼接语句发送至数据库模块;
数据库模块,用于执行所述拼接语句后得到数据库操作结果;将数据库操作结果发送至所述表决器;
表决器,用于比对多个数据库操作结果是否一致,得到比对结果;以及根据比对结果,确定是否存在对数据库模块的网络攻击行为。
CN201910451329.2A 2019-05-28 2019-05-28 数据库攻击防御方法及系统 Active CN110162974B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910451329.2A CN110162974B (zh) 2019-05-28 2019-05-28 数据库攻击防御方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910451329.2A CN110162974B (zh) 2019-05-28 2019-05-28 数据库攻击防御方法及系统

Publications (2)

Publication Number Publication Date
CN110162974A CN110162974A (zh) 2019-08-23
CN110162974B true CN110162974B (zh) 2021-03-30

Family

ID=67629423

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910451329.2A Active CN110162974B (zh) 2019-05-28 2019-05-28 数据库攻击防御方法及系统

Country Status (1)

Country Link
CN (1) CN110162974B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111526135A (zh) * 2020-04-15 2020-08-11 北京丁牛科技有限公司 一种网络活动数据的回溯方法及装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105577673A (zh) * 2015-12-29 2016-05-11 深圳市瑞铭无限科技有限公司 基于下发加密算法的数据加密方法和服务器
CN107491690A (zh) * 2017-07-28 2017-12-19 宁波保税区攀峒信息科技有限公司 一种包含可执行代码的需被相应应用软件装载处理的文件安全装载方法
CN107644175A (zh) * 2017-09-13 2018-01-30 南京南瑞集团公司 一种防止sql注入的方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9996679B2 (en) * 2016-05-03 2018-06-12 Pegasus Media Security, Llc Methods and apparatus for device authentication and secure data exchange between a server application and a device
CN107122657B (zh) * 2017-05-02 2021-01-01 上海红神信息技术有限公司 一种防御sql注入攻击的数据库代理装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105577673A (zh) * 2015-12-29 2016-05-11 深圳市瑞铭无限科技有限公司 基于下发加密算法的数据加密方法和服务器
CN107491690A (zh) * 2017-07-28 2017-12-19 宁波保税区攀峒信息科技有限公司 一种包含可执行代码的需被相应应用软件装载处理的文件安全装载方法
CN107644175A (zh) * 2017-09-13 2018-01-30 南京南瑞集团公司 一种防止sql注入的方法

Also Published As

Publication number Publication date
CN110162974A (zh) 2019-08-23

Similar Documents

Publication Publication Date Title
Ma et al. Cdrep: Automatic repair of cryptographic misuses in android applications
Taylor et al. To update or not to update: Insights from a two-year study of android app evolution
Crussell et al. Andarwin: Scalable detection of android application clones based on semantics
Chatzikonstantinou et al. Evaluation of cryptography usage in android applications
US20150256556A1 (en) Method and system for web integrity validator
US20070266434A1 (en) Protecting Applications Software Against Unauthorized Access, Reverse Engineering or Tampering
CN106845223B (zh) 用于检测恶意代码的方法和装置
CN103984891A (zh) 网络安全系统和方法
Barabanov et al. Statistics of software vulnerability detection in certification testing
Calciati et al. Automatically granted permissions in Android apps: An empirical study on their prevalence and on the potential threats for privacy
WO2014103115A1 (ja) 不正侵入検知装置、不正侵入検知方法、不正侵入検知プログラム及び記録媒体
KR20180081053A (ko) 도메인 생성 알고리즘(dga) 멀웨어 탐지를 위한 시스템 및 방법들
CN104537310A (zh) 移动存储设备的管理方法及客户端
Cai et al. Inferring the detection logic and evaluating the effectiveness of android anti-virus apps
Rankothge et al. Identification and mitigation tool for Sql injection attacks (SQLIA)
Shahriar et al. Content provider leakage vulnerability detection in Android applications
CN110162974B (zh) 数据库攻击防御方法及系统
Zhu et al. Detecting privilege escalation attacks through instrumenting web application source code
US11658996B2 (en) Historic data breach detection
Wen et al. An empirical study of sdk credential misuse in ios apps
CN112422527A (zh) 变电站电力监控系统的安全防护系统、方法和装置
WO2019071828A1 (zh) 检测应用安装包二次打包的方法、存储介质、设备及系统
WO2007055729A2 (en) Protecting applications software against unauthorized access, reverse engineering or tampering
US11611570B2 (en) Attack signature generation
Gokkaya et al. Software supply chain: review of attacks, risk assessment strategies and security controls

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
CB03 Change of inventor or designer information
CB03 Change of inventor or designer information

Inventor after: Han Shoukui

Inventor after: Zhang Gaoju

Inventor after: Li Ang

Inventor before: Han Shoukui

Inventor before: Tang Yuan

GR01 Patent grant
GR01 Patent grant