CN107463845B - 一种sql注入攻击的检测方法、系统和计算机处理设备 - Google Patents

一种sql注入攻击的检测方法、系统和计算机处理设备 Download PDF

Info

Publication number
CN107463845B
CN107463845B CN201710575664.4A CN201710575664A CN107463845B CN 107463845 B CN107463845 B CN 107463845B CN 201710575664 A CN201710575664 A CN 201710575664A CN 107463845 B CN107463845 B CN 107463845B
Authority
CN
China
Prior art keywords
sql
samples
marked
detected
injection attack
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
CN201710575664.4A
Other languages
English (en)
Other versions
CN107463845A (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.)
Shenzhen Power Supply Bureau Co Ltd
Original Assignee
Shenzhen Power Supply Bureau 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 Shenzhen Power Supply Bureau Co Ltd filed Critical Shenzhen Power Supply Bureau Co Ltd
Priority to CN201710575664.4A priority Critical patent/CN107463845B/zh
Publication of CN107463845A publication Critical patent/CN107463845A/zh
Application granted granted Critical
Publication of CN107463845B publication Critical patent/CN107463845B/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
    • 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

本发明提供一种SQL注入攻击的检测方法,该方法包括:获取待检测的SQL;将所述待检测的SQL按照预设规则分解为多个SQL样本;将所述多个SQL样本分别输入到对应数量的预设决策模型中,分别得到决策结果;将与多个SQL样本数量相对应的决策结果进行比较,根据比较结果判断待检测的SQL是否为注入攻击。采用这种方式就可以对获取的SQL进行分解为多个SQL样本,对每个样本进行处理,获取决策结果,然后根据决策结果的数量确定是否为SQL注入攻击,从而更加精确的检测SQL注入攻击。

Description

一种SQL注入攻击的检测方法、系统和计算机处理设备
技术领域
本发明涉及互联网技术领域,尤其涉及一种SQL注入攻击的检测方法、 系统和计算机处理设。
背景技术
近几年,SQL注入攻击始终盘踞着Web安全威胁的前三位。攻击者 通过SQL注入攻击,可以达到诸如网站挂马、网页篡改、信息盗取和渗 透内网等非法目的,因此,SQL注入攻击严重影响Web的安全和正常运 行。
所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域 名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。 具体来说,它是利用现有应用程序,将恶意的SQL命令注入到后台数据库 引擎执行的能力,它可以通过在Web表单中输入恶意SQL语句得到一个 存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行SQL语 句。传统的检测方法大致分为三类:关键字识别技术、正则识别技术和基 于自学习的数据库SQL注入防御技术。由于SQL语句的多样性,第一种 误报率较高,第二种虽然采用正则匹配使误报率降低,但依然存在SQL检 测准确性较低,第三种要求服务器学习合法的SQL语句,否则会把合法的 SQL语句当成非法的SQL语句进行处理,同样存在准确性较低的问题。
因此,如何提供一种SQL注入攻击的检测方法,能够更加精确的检测 到SQL注入攻击,成为本领域亟需解决的问题。
发明内容
本发明的目的是一种显示亮度调整范围更大的屏幕显示的控制方法、 系统和计算机处理设备。
本发明的目的是通过以下技术方案来实现的:
一种SQL注入攻击的检测方法,该方法包括:
获取待检测的SQL;
将所述待检测的SQL按照预设规则分解为多个SQL样本;
将所述多个SQL样本分别输入到对应数量的预设决策模型中,分别得 到决策结果;
将与多个SQL样本数量相对应的决策结果进行比较,根据比较结果判 断待检测的SQL是否为注入攻击。
优选的,所述将所述待检测的SQL按照预设规则分解为多个SQL样本 的步骤具体包括:
根据预设数据库信息和历史SQL信息获取带有检测结果标记的标记 SQL语法树;
将所述待检测的SQL按照对应的标记SQL语法树进行转换处理;
从处理后的标记SQL语法树中随机抽取特征值,并重复多次,得到多 个SQL样本。
优选的,所述根据预设数据库信息和历史SQL信息获取带有检测结果 标记的SQL语法树的步骤具体包括:
根据预设数据库及预设语法和关键字创建初始SQL语法树;
获取历史SQL数据和对相应历史SQL数据的检测结果;
将检测结果标记到对应的历史SQL数据上;
将已标记的历史SQL数据按照对应的初始SQL语法树进行转换处理, 获取带有检测结果标记的标记SQL语法树。
优选的,所述方法进一步包括:
检测每个标记SQL语法树的长度,获取其中最长的标记SQL语法树的 长度;
将其余的标记SQL语法树的长度调整至与最长的标记SQL语法树的长 度一致。
优选的,所述将其余的标记SQL语法树的长度调整至与最长的标记SQL 语法树的长度一致的步骤具体包括:
根据其余的标记SQL语法树与最长的标记SQL语法树的长度的长度差 值,在其余的标记SQL语法树中添加占位符作为特征值。
优选的,所述预设决策模型为随机森林模型。
优选的,所述将所述多个SQL样本分别输入到对应数量的预设决策模 型中,分别得到决策结果的步骤具体包括:
根据SQL样本的属性计算每个属性的信息增益,选取信息增益最大的 作为根节点属性;
根据根结点属性的每个可能值对应生成分支,并把SQL样本排列到预 设的分支之下;
用每个分支结点关联的SQL样本来选取在该结点被测试的最佳属性, 根据最佳属性得到决策结果。
优选的,所述决策结果中包括合法结果和注入攻击结果;所述将与多 个SQL样本数量相对应的决策结果进行比较,根据比较结果判断待检测的 SQL是否为注入攻击的步骤包括:
将多个决策结果进行比较,若合法结果的数量大于注入攻击结果的数 量,则所述待检测的SQL为合法;若合法结果的数量不大于注入攻击结果 的数量,则所述待检测的SQL为注入攻击。
一种计算机处理设备,包括处理器及计算机可读存储介质,所述处理 器获取所述计算机可读存储介质上的计算机程序,并执行如上述任一所述 方法的步骤。
一种SQL注入攻击的检测系统,包括:
获取模块,用于获取待检测的SQL;
分解模块,用于将所述待检测的SQL按照预设规则分解为多个SQL样 本;
决策模块,用于将所述多个SQL样本分别输入到对应数量的预设决策 模型中,分别得到决策结果;
比较模块,用于将与多个SQL样本数量相对应的决策结果进行比较, 根据比较结果判断待检测的SQL是否为注入攻击。
本发明的SQL注入攻击的检测方法由于包括:获取待检测的SQL;将 所述待检测的SQL按照预设规则分解为多个SQL样本;将所述多个SQL样 本分别输入到对应数量的预设决策模型中,分别得到决策结果;将与多个 SQL样本数量相对应的决策结果进行比较,根据比较结果判断待检测的SQL 是否为注入攻击。采用这种方式就可以对获取的SQL进行分解为多个SQL 样本,对每个样本进行处理,获取决策结果,然后根据决策结果的数量确 定是否为SQL注入攻击,从而更加精确的检测SQL注入攻击。
附图说明
图1是本发明实施例的一种SQL注入攻击的检测方法的流程图;
图2是本发明实施例的一种SQL注入攻击的检测系统的示意图。
具体实施方式
虽然流程图将各项操作描述成顺序的处理,但是其中的许多操作可以 被并行地、并发地或者同时实施。各项操作的顺序可以被重新安排。当其 操作完成时处理可以被终止,但是还可以具有未包括在附图中的附加步骤。 处理可以对应于方法、函数、规程、子例程、子程序等等。
计算机设备包括用户设备与网络设备。其中,用户设备或客户端包括 但不限于电脑、智能手机、PDA等;网络设备包括但不限于单个网络服务 器、多个网络服务器组成的服务器组或基于云计算的由大量计算机或网络 服务器构成的云。计算机设备可单独运行来实现本发明,也可接入网络并 通过与网络中的其他计算机设备的交互操作来实现本发明。计算机设备所 处的网络包括但不限于互联网、广域网、城域网、局域网、VPN网络等。
在这里可能使用了术语“第一”、“第二”等等来描述各个单元,但 是这些单元不应当受这些术语限制,使用这些术语仅仅是为了将一个单元 与另一个单元进行区分。这里所使用的术语“和/或”包括其中一个或更多 所列出的相关联项目的任意和所有组合。当一个单元被称为“连接”或“耦 合”到另一单元时,其可以直接连接或耦合到所述另一单元,或者可以存 在中间单元。
这里所使用的术语仅仅是为了描述具体实施例而不意图限制示例性实 施例。除非上下文明确地另有所指,否则这里所使用的单数形式“一个”、 “一项”还意图包括复数。还应当理解的是,这里所使用的术语“包括” 和/或“包含”规定所陈述的特征、整数、步骤、操作、单元和/或组件的 存在,而不排除存在或添加一个或更多其他特征、整数、步骤、操作、单 元、组件和/或其组合。
下面结合附图和较佳的实施例对本发明作进一步说明。
如图1所示,本实施例中公开一种SQL注入攻击的检测方法,该方法 包括:
S101、获取待检测的SQL;
S102、将所述待检测的SQL按照预设规则分解为多个SQL样本;
S103、将所述多个SQL样本分别输入到对应数量的预设决策模型中, 分别得到决策结果;
S104、将与多个SQL样本数量相对应的决策结果进行比较,根据比较 结果判断待检测的SQL是否为注入攻击。
本发明的SQL注入攻击的检测方法由于包括:获取待检测的SQL;将 所述待检测的SQL按照预设规则分解为多个SQL样本;将所述多个SQL样 本分别输入到对应数量的预设决策模型中,分别得到决策结果;将与多个 SQL样本数量相对应的决策结果进行比较,根据比较结果判断待检测的SQL 是否为注入攻击。采用这种方式就可以对获取的SQL进行分解为多个SQL 样本,对每个样本进行处理,获取决策结果,然后根据决策结果的数量确 定是否为SQL注入攻击,从而更加精确的检测SQL注入攻击。
SQL(结构化查询语言)是一种特殊目的的编程语言,是一种数据库查 询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统; 同时也是数据库脚本文件的扩展名。结构化查询语言包含6个部分:
一:数据查询语言(DQL:Data Query Language):其语句,也称为“数 据检索语句”,用以从表中获得数据,确定数据怎样在应用程序给出。保 留字SELECT是DQL(也是所有SQL)用得最多的动词,其他DQL常用的保 留字有WHERE,ORDER BY,GROUP BY和HAVING。这些DQL保留字常与其他 类型的SQL语句一起使用。
二:数据操作语言(DML:Data Manipulation Language):其语句包 括动词INSERT,UPDATE和DELETE。它们分别用于添加,修改和删除表中 的行。也称为动作查询语言。
三:事务处理语言(TPL):它的语句能确保被DML语句影响的表的所 有行及时得以更新。TPL语句包括BEGIN TRANSACTION,COMMIT和ROLLBACK。
四:数据控制语言(DCL):它的语句通过GRANT或REVOKE获得许可, 确定单个用户和用户组对数据库对象的访问。某些RDBMS可用GRANT或 REVOKE控制对表单个列的访问。
五:数据定义语言(DDL):其语句包括动词CREATE和DROP。在数据 库中创建新表或删除表(CREAT TABLE或DROP TABLE);为表加入索引等。 DDL包括许多与人数据库目录中获得数据有关的保留字。它也是动作查询 的一部分。
六:指针控制语言(CCL):它的语句,像DECLARE CURSOR,FETCH INTO 和UPDATEWHERE CURRENT用于对一个或多个表单独行的操作。
本实施例中示例的,所述将所述待检测的SQL按照预设规则分解为多 个SQL样本的步骤具体包括:
根据预设数据库信息和历史SQL信息获取带有检测结果标记的标记 SQL语法树;
将所述待检测的SQL按照对应的标记SQL语法树进行转换处理;
从处理后的标记SQL语法树中随机抽取特征值,并重复多次,得到多 个SQL样本。
本实施例中示例的,所述根据预设数据库信息和历史SQL信息获取带 有检测结果标记的SQL语法树的步骤具体包括:
根据预设数据库及预设语法和关键字创建初始SQL语法树;
获取历史SQL数据和对相应历史SQL数据的检测结果;
将检测结果标记到对应的历史SQL数据上;
将已标记的历史SQL数据按照对应的初始SQL语法树进行转换处理, 获取带有检测结果标记的标记SQL语法树。
采用这种方式就可以根据不同的SQL数据库建立不同SQL语法树,例 如select语法中对应的是数据操作语言(DML:Data Manipulation Language),drop语法对应的是数据定义语言(DDL),关键字例如Integer, Keyword等,对不同类型的SQL数据库建立语法树,这样在接收到待检测 的SQL后就可以将其归类到相应的SQL语法树中,从而按照标准的SQL语法树将待检测的SQL进行转换。而且,本实施例中采用以往的历史数据生 成对应的SQL语法树,历史数据中已经可以根据以往的实际结果得知该对 应的历史SQL是否为注入攻击,本实施例中将是否为注入攻击进行标记, 从而在上述转换中将标记加入进去,得到带有检测结果标记的标记SQL语 法树。标记也可采用符号标记或数字标记等等。
例如,对于历史数据“select 2 from admin”,得知这个数据是注入 攻击,因此标记为“select 2 from admin”0,其中0为标记,代表该 历史数据为注入攻击。当然也可以采用其他标记,例如字母或符号等等。
而对应select语法的语言为DML,根据DML的数据库及select语法 和关键字创建初始SQL语法树:
[‘DML’,‘Integer’,‘Keyword’,‘Keyword’];
得到该初始SQL语法树之后,将对应的带有标记的历史数据转换为带 检测结果标记的标记SQL语法树:
[‘DML’,‘Integer’,‘Keyword’,‘Keyword’,‘0’];其中 0为标记,代表该历史数据为注入攻击。
又如,对于历史数据“INSERT INTO Persons VALUES('Gates','Bill', 'Xuanwumen 10','Beijing')”,得知这个数据是注入攻击,因此标记为 “INSERT INTOPersons VALUES('Gates','Bill','Xuanwumen 10', 'Beijing')”0,其中0为标记,代表该历史数据为注入攻击。
而对应INSERT语法的语言为DML,根据DML的数据库及INSERT语法 和关键字创建初始SQL语法树:
[‘DML’,‘Keyword’,‘Identifier',‘Keyword’,‘Parenthesis’];
得到该初始SQL语法树之后,将对应的带有标记的历史数据转换为带 检测结果标记的标记SQL语法树:
[‘DML’,‘Keyword’,‘Identifier',‘Keyword’,‘Parenthesis’, ‘0’];其中0为标记,代表该历史数据为注入攻击。
又如,对于历史数据“drop*from 111”,得知这个数据是合法的, 并非注入攻击,因此标记为“drop*from 111”1,其中1为标记,代 表合法。当然也可以采用其他标记,例如字母或符号等等。
而对应drop语法的语言为DDL,根据DDL的数据库及drop语法和关 键字创建初始SQL语法树:
[‘DDL’,‘Wildcard’,‘Keyword’,‘Integer’];
得到该初始SQL语法树之后,将对应的带有标记的历史数据转换为带 检测结果标记的标记SQL语法树:
[‘DDL’,‘Wildcard’,‘Keyword’,‘Integer’,‘1’];其中 1为标记,代表合法。
本实施例中示例的,所述方法进一步包括:
检测每个标记SQL语法树的长度,获取其中最长的标记SQL语法树的 长度;
将其余的标记SQL语法树的长度调整至与最长的标记SQL语法树的长 度一致。
例如,上述三个案例中,[‘DML’,‘Integer’,‘Keyword’,‘Keyword’, ‘0’]的长度为4;[‘DML’,‘Keyword’,‘Identifier',‘Keyword’, ‘Parenthesis’,‘0’]的长度为5;[‘DDL’,‘Wildcard’,‘Keyword’, ‘Integer’,‘1’]的长度为4。其中检测结果标记不算在长度中,即本 实施例中的0和1不算在长度中。为了便于抽取特征值,可将各个标记SQL 语法树的长度调整到一直。例如可将较短的语句调整到与最长的语句长度 相同。
本实施例中示例的,所述将其余的标记SQL语法树的长度调整至与最 长的标记SQL语法树的长度一致的步骤具体包括:
根据其余的标记SQL语法树与最长的标记SQL语法树的长度的长度差 值,在其余的标记SQL语法树中添加占位符作为特征值。
本实施例中上述三个案例中最长的长度为5,根据其他的语句的长度 与最长的长度差,可添加占位符,例如[‘DML’,‘Integer’,‘Keyword’, ‘Keyword’,‘0’]的长度为4,因此可添加一个占位符,占位符可以是 数字、字母、符合或几种的结合等等,本实施例中采用NULL作为占位符, 得到长度调整后的语句:[‘DML’,‘Integer’,‘Keyword’,‘Keyword’,‘NULL’‘0’]。
又如[‘DDL’,‘Wildcard’,‘Keyword’,‘Integer’,‘1’] 的长度为4,因此可添加一个占位符,本实施例中采用NULL作为占位符, 得到长度调整后的语句:[‘DDL’,‘Wildcard’,‘Keyword’,‘Integer’, ‘NULL’,‘1’]。这样上述两个语句的长度就与最长的语句长度相同了。 从而方便从语句中随机选取特征值,组成多个SQL样本。
本实施例中示例的,所述预设决策模型为随机森林模型。随机森林指 的是利用多棵树对样本进行训练并预测的一种分类器。机器学习中,随机 森林是一个包含多个决策树的分类器,并且其输出的类别是由个别树输出 的类别的众数而定。Leo Breiman和AdeleCutler发展出推论出随机森 林的算法。而"Random Forests"是他们的商标。这个术语是1995年由 贝尔实验室的Tin Kam Ho所提出的随机决策森林(random decision forests)而来的。这个方法则是结合Breimans的"Bootstrap aggregating"想法和Ho的"randomsubspace method"以建造决策树的集 合。
本实施例中示例的,所述将所述多个SQL样本分别输入到对应数量的 预设决策模型中,分别得到决策结果的步骤具体包括:
根据SQL样本的属性计算每个属性的信息增益,选取信息增益最大的 作为根节点属性;
根据根结点属性的每个可能值对应生成分支,并把SQL样本排列到预 设的分支之下;
用每个分支结点关联的SQL样本来选取在该结点被测试的最佳属性, 根据最佳属性得到决策结果。
本实施例中示例的,所述决策结果中包括合法结果和注入攻击结果; 所述将与多个SQL样本数量相对应的决策结果进行比较,根据比较结果判 断待检测的SQL是否为注入攻击的步骤包括:
将多个决策结果进行比较,若合法结果的数量大于注入攻击结果的数 量,则所述待检测的SQL为合法;若合法结果的数量不大于注入攻击结果 的数量,则所述待检测的SQL为注入攻击。
例如上述案例中,如果根据多个SQL样本中得到的检测结果中,若合 法结果的数量大于注入攻击结果的数量,则所述待检测的SQL为合法;若 合法结果的数量不大于注入攻击结果的数量,则所述待检测的SQL为注入 攻击。具体的,如果结果为1的SQL样本的数量大于结果为0的SQL样本 的数量,那么待检测的SQL为合法;如果结果为1的SQL样本的数量不大 于结果为0的SQL样本的数量,那么待检测的SQL为注入攻击。
为进一步阐述本发明,具体示例的过程为:
预先处理的步骤:
一、创建SQL语法树及训练数据特征,该步骤进一步包括:
a).根据常见的数据库(例如Mysql)的语法及关键字等,构建初始SQL 语法树。例如包括DDL(Data Definition Language,数据定义语 言),DML(Data ManipulationLanguage,数据操作语言),DCL(Data Control Language,数据控制语言),TCL(Transaction Control Language,事务控 制语言),关键字如keyword,identifier,parenthesis,integer等,其 中语法和关键字在对应的数据库中已有。
b).将带有检测结果标记的历史SQL数据根据初始SQL语法树转换成带 有检测结果标记的标记SQL语法树。例如下面5组原始数据SQL及其转换后的 结果,每组中第一行是原始SQL数据,也为历史SQL数据,第二行是标记SQL 语法树。0表示合法SQL,1表示注入SQL。
i.“select 2 from admin”0
['DML','Integer','Keyword','Keyword',’0’]
ii.“INSERT INTO Persons VALUES('Gates','Bill','Xuanwumen 10','Beijing')”0
['DML','Keyword','Identifier','Keyword', 'Parenthesis',’0’]
iii.“drop*from 111”1
['DDL','Wildcard','Keyword','Integer',’1’]
iv.“hhh from database alter(drop table)”1
['Identifier','Keyword','Keyword','DDL', 'Parenthesis',’1’]
v.“exec hhh tabe ttt aaa”1
['Keyword','Identifier','Identifier','Error', 'Punctuation',’1’]
c).考虑到SQL语句的长度不一,将SQL语句长度作为一个特征加入到特 征空间,因此,上面例子中的5句SQL变为:
['DML','Integer','Keyword','Keyword',’4’,’0’]
['DML','Keyword','Identifier','Keyword','Parenthesis',’ 5’,’0’]
['DDL','Wildcard','Keyword','Integer',’4’,’1’]
['Identifier','Keyword','Keyword','DDL','Parenthesis',’ 5’,’1’]
['Keyword','Identifier','Identifier','Error', 'Punctuation',’5’,’1’]
将原始训练集转换成形如上述的SQL语法树集。
二、使用上述建立好的训练数据使用随机森林进行模型训练;
a).设上述的SQL语法树集共有N个样本,每个样本有M个特征值,这里 需要说明的是:由于每句SQL长度不一,假设训练集中最长的SQL长度为L, 则应满足M>=L,对于SQL长度小于M的样本,不足的特征值用NULL代替。例 如:当M=6时,上述5句SQL样本变为:
['DML','Integer','Keyword','Keyword',’4’,’NULL’,’0’]
['DML','Keyword','Identifier','Keyword','Parenthesis',’ 5’,’0’]
['DDL','Wildcard','Keyword','Integer',’4’,’NULL’,’1’]
['Identifier','Keyword','Keyword','DDL','Parenthesis',’ 5’,’1’]
['Keyword','Identifier','Identifier','Error', 'Punctuation',’5’,’1’]
b).从N个样本随机有放回选取n(n<N)个样本,从这n个样本随机抽取 m(m<M)个特征值得到样本T,重复s次。假设每次得到的样本为ti,i取值 为1到s的所有正整数;其中M,N,m,n,s均为自然数,s大于等于2。
c).将上述得到的样本ti构造决策树,该步骤进一步包括:
(1).根据ti样本集的属性计算每个属性的信息增益,选取信息增益最大 的作为根节点属性。
(2).为根结点属性的每个可能值产生一个分支,并把训练样例排列到 适当的分支之下。
(3).重复这个过程,用每个分支结点关联的训练样例来选取在该点被 测试的最佳属性。
检测步骤:
三、将待检测SQL按照步骤一的规则切分成s个SQL样本(一句SQL 对应于s个SQL样本),分别输入到步骤二中得到的s棵决策树,在s棵决 策树得到结果,具体的可根据最佳属性得到决策结果;其中,若合法结果 的数量大于注入攻击结果的数量,则所述待检测的SQL为合法;若合法结 果的数量不大于注入攻击结果的数量,则所述待检测的SQL为注入攻击。具体的,如果结果为1的SQL样本的数量大于结果为0的SQL样本的数量, 那么待检测的SQL为合法;如果结果为1的SQL样本的数量不大于结果为 0的SQL样本的数量,那么待检测的SQL为注入攻击。
一种计算机处理设备,包括处理器及计算机可读存储介质,所述处理 器获取所述计算机可读存储介质上的计算机程序,并执行如上述任一所述 方法的步骤。
如图2所示,本实施例中公开一种SQL注入攻击的检测系统,包括:
获取模块201,用于获取待检测的SQL;
分解模块202,用于将所述待检测的SQL按照预设规则分解为多个SQL 样本;
决策模块203,用于将所述多个SQL样本分别输入到对应数量的预设 决策模型中,分别得到决策结果;
比较模块204,用于将与多个SQL样本数量相对应的决策结果进行比 较,根据比较结果判断待检测的SQL是否为注入攻击。
采用这种方式就可以对获取的SQL进行分解为多个SQL样本,对每个 样本进行处理,获取决策结果,然后根据决策结果的数量确定是否为SQL 注入攻击,从而更加精确的检测SQL注入攻击。
以上内容是结合具体的优选实施方式对本发明所作的进一步详细说 明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术 领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若 干简单推演或替换,都应当视为属于本发明的保护范围。

Claims (8)

1.一种SQL注入攻击的检测方法,其特征在于,该方法包括:
获取待检测的SQL;
将所述待检测的SQL按照预设规则分解为多个SQL样本,具体包括:
根据预设数据库及预设语法和关键字创建初始SQL语法树;
获取历史SQL数据和对相应历史SQL数据的检测结果;
将检测结果标记到对应的历史SQL数据上;
将已标记的历史SQL数据按照对应的初始SQL语法树进行转换处理,获取带有检测结果标记的标记SQL语法树;
将所述待检测的SQL按照对应的标记SQL语法树进行转换处理;
从处理后的标记SQL语法树中随机抽取特征值,并重复多次,得到多个SQL样本;
将所述多个SQL样本分别输入到对应数量的预设决策模型中,分别得到决策结果;
将与多个SQL样本数量相对应的决策结果进行比较,根据比较结果判断待检测的SQL是否为注入攻击。
2.根据权利要求1所述的SQL注入攻击的检测方法,其特征在于,所述方法进一步包括:
检测每个标记SQL语法树的长度,获取其中最长的标记SQL语法树的长度;
将其余的标记SQL语法树的长度调整至与最长的标记SQL语法树的长度一致。
3.根据权利要求2所述的SQL注入攻击的检测方法,其特征在于,所述将其余的标记SQL语法树的长度调整至与最长的标记SQL语法树的长度一致的步骤具体包括:
根据其余的标记SQL语法树与最长的标记SQL语法树的长度的长度差值,在其余的标记SQL语法树中添加占位符作为特征值。
4.根据权利要求1所述的SQL注入攻击的检测方法,其特征在于,所述预设决策模型为随机森林模型。
5.根据权利要求4所述的SQL注入攻击的检测方法,其特征在于,所述将所述多个SQL样本分别输入到对应数量的预设决策模型中,分别得到决策结果的步骤具体包括:
根据SQL样本的属性计算每个属性的信息增益,选取信息增益最大的作为根节点属性;
根据根结点属性的每个可能值对应生成分支,并把SQL样本排列到预设的分支之下;
用每个分支结点关联的SQL样本来选取在该结点被测试的最佳属性,根据最佳属性得到决策结果。
6.根据权利要求1所述的SQL注入攻击的检测方法,其特征在于,所述决策结果中包括合法结果和注入攻击结果;所述将与多个SQL样本数量相对应的决策结果进行比较,根据比较结果判断待检测的SQL是否为注入攻击的步骤包括:
将多个决策结果进行比较,若合法结果的数量大于注入攻击结果的数量,则所述待检测的SQL为合法;若合法结果的数量不大于注入攻击结果的数量,则所述待检测的SQL为注入攻击。
7.一种计算机处理设备,包括处理器及计算机可读存储介质,其特征在于,所述处理器获取所述计算机可读存储介质上的计算机程序,并执行如权利要求1-6任一所述方法的步骤。
8.一种SQL注入攻击的检测系统,其特征在于,包括:
获取模块,用于获取待检测的SQL;
分解模块,用于将所述待检测的SQL按照预设规则分解为多个SQL样本,具体包括:
根据预设数据库及预设语法和关键字创建初始SQL语法树;
获取历史SQL数据和对相应历史SQL数据的检测结果;
将检测结果标记到对应的历史SQL数据上;
将已标记的历史SQL数据按照对应的初始SQL语法树进行转换处理,获取带有检测结果标记的标记SQL语法树;
将所述待检测的SQL按照对应的标记SQL语法树进行转换处理;
从处理后的标记SQL语法树中随机抽取特征值,并重复多次,得到多个SQL样本;
决策模块,用于将所述多个SQL样本分别输入到对应数量的预设决策模型中,分别得到决策结果;
比较模块,用于将与多个SQL样本数量相对应的决策结果进行比较,根据比较结果判断待检测的SQL是否为注入攻击。
CN201710575664.4A 2017-07-14 2017-07-14 一种sql注入攻击的检测方法、系统和计算机处理设备 Active CN107463845B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710575664.4A CN107463845B (zh) 2017-07-14 2017-07-14 一种sql注入攻击的检测方法、系统和计算机处理设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710575664.4A CN107463845B (zh) 2017-07-14 2017-07-14 一种sql注入攻击的检测方法、系统和计算机处理设备

Publications (2)

Publication Number Publication Date
CN107463845A CN107463845A (zh) 2017-12-12
CN107463845B true CN107463845B (zh) 2021-04-20

Family

ID=60546695

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710575664.4A Active CN107463845B (zh) 2017-07-14 2017-07-14 一种sql注入攻击的检测方法、系统和计算机处理设备

Country Status (1)

Country Link
CN (1) CN107463845B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108090351B (zh) * 2017-12-14 2022-03-08 北京百度网讯科技有限公司 用于处理请求消息的方法和装置
CN113111345A (zh) * 2020-01-13 2021-07-13 深信服科技股份有限公司 一种xxe攻击检测方法、系统、设备及计算机存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106850675A (zh) * 2017-03-10 2017-06-13 北京安赛创想科技有限公司 一种网络攻击行为的确定方法及装置
CN106888210A (zh) * 2017-03-10 2017-06-23 北京安赛创想科技有限公司 一种网络攻击的警示方法及装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106850675A (zh) * 2017-03-10 2017-06-13 北京安赛创想科技有限公司 一种网络攻击行为的确定方法及装置
CN106888210A (zh) * 2017-03-10 2017-06-23 北京安赛创想科技有限公司 一种网络攻击的警示方法及装置

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Data-Hack SQL注入检测;大学生;《http://drops.xmd5.com/static/drops/tips-5118.html》;20150312;第1-4页 *
基于随机森林的不平衡数据分类方法研究;肖坚;《中国优秀硕士学位论文全文数据库 信息科技辑》;20150215;第I140-140页 *

Also Published As

Publication number Publication date
CN107463845A (zh) 2017-12-12

Similar Documents

Publication Publication Date Title
CN109697162B (zh) 一种基于开源代码库的软件缺陷自动检测方法
CN110414219B (zh) 基于门控循环单元与注意力机制的注入攻击检测方法
Alzahrani et al. Understanding plagiarism linguistic patterns, textual features, and detection methods
US8407253B2 (en) Apparatus and method for knowledge graph stabilization
CN111552855B (zh) 一种基于深度学习的网络威胁情报自动抽取方法
CN110929125B (zh) 搜索召回方法、装置、设备及其存储介质
CN102750316B (zh) 基于语义共现模型的概念关系标签抽取方法
CN110457672B (zh) 关键词确定方法、装置、电子设备及存储介质
CN113656807B (zh) 一种漏洞管理方法、装置、设备及存储介质
CN110191096A (zh) 一种基于语义分析的词向量网页入侵检测方法
US11017002B2 (en) Description matching for application program interface mashup generation
US20210336987A1 (en) Method for Detecting Structured Query Language (SQL) Injection Based on Big Data Algorithm
CN110581864B (zh) 一种sql注入攻击的检测方法及装置
CN110597844A (zh) 异构数据库数据统一访问方法及相关设备
AU2021255654A1 (en) Systems and methods for determining entity attribute representations
CN114900346B (zh) 基于知识图谱的网络安全测试方法及系统
CN107526968A (zh) 一种基于语法分析的sql防注入方法和装置
CN104346382B (zh) 使用语言查询的文本分析系统和方法
Shang et al. A framework to construct knowledge base for cyber security
CN107463845B (zh) 一种sql注入攻击的检测方法、系统和计算机处理设备
CN110851584B (zh) 一种法律条文精准推荐系统和方法
CN111444713B (zh) 新闻事件内实体关系抽取方法及装置
CN110717014B (zh) 一种本体知识库动态构建方法
CN114793164B (zh) 一种基于多特征的apt攻击事件关联方法
KR102324196B1 (ko) 지식 베이스 보강을 위한 시스템 및 방법

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
TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20201103

Address after: 318015 no.2-3167, zone a, Nonggang City, no.2388, Donghuan Avenue, Hongjia street, Jiaojiang District, Taizhou City, Zhejiang Province

Applicant after: Taizhou Jiji Intellectual Property Operation Co.,Ltd.

Address before: 201616 Shanghai city Songjiang District Sixian Road No. 3666

Applicant before: Phicomm (Shanghai) Co.,Ltd.

TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20210322

Address after: 518000 electric power dispatching and communication building, 4020 Shennan East Road, Luohu District, Shenzhen, Guangdong

Applicant after: SHENZHEN POWER SUPPLY BUREAU Co.,Ltd.

Address before: 318015 no.2-3167, area a, nonggangcheng, 2388 Donghuan Avenue, Hongjia street, Jiaojiang District, Taizhou City, Zhejiang Province

Applicant before: Taizhou Jiji Intellectual Property Operation Co.,Ltd.

GR01 Patent grant
GR01 Patent grant