CN101609493A - 一种基于自学习的数据库sql注入防护方法 - Google Patents
一种基于自学习的数据库sql注入防护方法 Download PDFInfo
- Publication number
- CN101609493A CN101609493A CNA2009101812903A CN200910181290A CN101609493A CN 101609493 A CN101609493 A CN 101609493A CN A2009101812903 A CNA2009101812903 A CN A2009101812903A CN 200910181290 A CN200910181290 A CN 200910181290A CN 101609493 A CN101609493 A CN 101609493A
- Authority
- CN
- China
- Prior art keywords
- sql
- sql statement
- database
- statement
- knowledge base
- 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.)
- Pending
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于自学习的数据库SQL注入防护方法,包括学习阶段和过滤阶段。学习阶段工作在安全环境下,此时所有的SQL语句都是由应用系统产生的合法SQL语句,通过对这些语句进行解析,基于解析结果,分析并统计它们的特征,从而构建一个合法SQL语句的知识模型(知识库);过滤阶段工作在现实环境中,此时假设所有的SQL语句都可能是非法SQL语句,将这些语句与安全环境下建立的知识库进行模式匹配,匹配成功则为合法的SQL语句,否则为非法SQL语句。本发明的有益效果是基于学习合法SQL语句的SQL注入防护系统能够大幅减少传统SQL注入防护产生的误报率以及漏报率,提高整个系统的防御能力。
Description
技术领域
本发明涉及一种数据库SQL注入防护方法,特别是涉及一种基于自学习的数据库SQL注入防护方法。
背景技术
随着Internet的发展,基于B/S模式的商业动态网站的开发越来越受到各大公司的青睐,该模式大多采用ASP(.NET)+SQL+IIS的平台架构,因此使用这种模式编写应用程序的程序员也越来越多。但编程人员水平的参差不齐以及安全防御技术的不成熟,给应用系统带来了很多不安全因素。大部分web应用系统需要与用户进行交互,从用户那里接受数据并进行处理,如果攻击者故意输入含有恶意构造的数据,则在系统执行处理时,这些数据中包含的恶意代码就会被系统或者其它客户端执行,从而对服务器或客户端造成损害,这就是所谓的SQL注入。
由于SOL注入是从正常的WWW端口访问,并且看起来和正常的web页面访问没有什么区别,所以目前常见的防火墙检测不到SQL注入。如何有效地防御SOL注入也成了人们关注的问题。
目前对于防护SQL注入,比较常见的方法比如屏蔽错误信息,对用户输入进行合法性检查,过滤单引号,以及根据已知的SQL注入方式进行特征过滤检查等。这几种防护手段都能够一定程度上减少SQL注入的攻击。然而对于一些有经验的攻击者来说,绕过这些防御并不是难事,比如针对用户输入检查,攻击者可以将输入的部分或全部字符全部用ASCII码代替来避开检查。而且SQL注入方式变化多样,几乎每天都有新的攻击手段出现,基于已知的特征过滤存在着相当大的缺陷,而且单纯的特征过滤误报率非常高,比如一些显著的SQL注入语句都包含1=1特征,如果特征检查过程中将所有的包含1=1特征的SQL语句判定非法,这样大量合法的SQL语句都将被阻断,而与1=1效果相同的注入攻击方式2=2,(1)=(1),abs(1)=abs(1)等都可能被放过。
本发明通过分析合法SQL语句的特征构造知识库,现实环境下将SQL语句与知识库进行匹配,识别合法的SQL语句,从而过滤非法SQL语句。在工作流程上,与申请日为20070917,专利号:200710145398.8的“一种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语句。
学习阶段包括如下步骤:
301.接收一条SQL语句;
302.对SQL语句进行解析,产生SQL语法树,如果解析出错,跳转至步骤301,重新接受SQL语句;
303.对语法树进行分析,获取访问行为特征;
304.根据预定规则对语法树进行裁剪,获取SQL语句的主干结构特征;
305.将所有不同的特征进行分类统计,加入知识库;
306.通过一段时间全面的学习,构建完整的知识库。
过滤阶段包括如下步骤:
401.接收一条SQL语句;
402.对SQL语句进行解析,产生语法树,如果解析出错,跳转至步骤406;
403.对语法树进行分析,获取访问行为特征,将访问行为特征与知识库进行匹配,匹配不成功则跳转至步骤407,否则跳转至步骤404;
404.根据预定规则对语法树进行裁剪,获取SQL语句的主干结构特征,将其与知识库进行匹配,匹配不成功跳转至步骤408,否则跳转至步骤405;
405.判定SQL语句合法,允许其通行;
406.SQL语句语法错误,判定该语句非法,产生报警信息。
407.访问行为不合法,判定SQL语句非法,产生报警信息;
408.主干结构不合法,判定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注入防护方法中,在过滤阶段,为了提高特征的匹配的效率以及成功率,在匹配过程中采用高效的HASH函数,同时在一次匹配过程中利用多个不同的HASH算法,计算多个HASH值进行匹配。
本发明所述一种基于自学习的数据库SQL注入防护方法中,在过滤阶段,特征匹配包括访问行为与知识库的数据库行为池的匹配,SQL主干结构与知识库内的SQL池进行匹配。具体步骤如下:
数据库行为池的匹配:
901.对SQL语法树进行分析,获取访问行为,具体包括涉及数据库访问对象以及对其的操作。
902.计算数据库对象名的HASH值,以HASH值为索引,找出相同数据库对象名称,如果存在相同数据库对象则跳至步骤903进行行为匹配,否则跳至步骤904;
903.比较该对象的操作行为,如果存在该行为则跳至步骤906,否则跳至步骤905;
904.匹配不成功,返回原因:不存在相同数据库对象;
905.匹配不成功,返回原因:数据对象的操作不合法;
906.匹配成功,返回。
SQL池的匹配:
1001.对解析后SQL语法树进行裁剪,形成规范语法树;
1002.计算语法树的两棵不同的子树的HASH值:hash1、hash2;
1003.以hash1为索引,进行查找,如果存在相同hash值则跳至步骤1004,否则跳至步骤1006;
1004.找出ha sh1相同的语法树,比较hash2,相同则跳至步骤1005,否则跳至步骤1006;
1005.匹配成功;
1006.匹配失败。
本发明的有益效果是基于学习合法SQL语句的SQL注入防护系统能够大幅减少传统SQL注入防护产生的误报率以及漏报率,提高整个系统的防御能力。同时系统对于应用业务系统完全透明,上层系统无需做任何改动。
附图说明
图1为本发明学习阶段具体处理流程图;
图2为本发明过滤阶段具体处理流程图;
图3为本发明数据库行为池匹配流程图;
图4为本发明SQL池匹配流程图;
图5为本发明防注入系统组成示意图;
图6为语法数生成流程示意图;
图7为规范语法树示意图。
具体实施方式
下面结合附图以及具体实例对本发明进一步说明。
本发明所述的新的基于自学习的数据库SQL注入防护方法,包括两个工作阶段:学习阶段、过滤阶段。
如图1所示,学习阶段在安全环境中,学习所有的合法SQL语句,提取特征,从而构建知识库,具体步骤如下:
301:接收一条SQL语句;
假设下面为学习阶段将被学习的合法SQL语句:
1、select*from a where username=‘liming’and passwd=123456;
2、select*from USER_CATALOG;
3、select*from person where cardNum=124 and name=‘li’and 1=1;
4、insert into Employees(FirstName,LastName,Title)values(′Harry′,′Washington′,′Trainee′);
5、update Employees set ReportsTo=5 WHERE ReportsTo=2;
6、delete*from Employees where FirstName=‘Harry’。
302:对SQL语句进行解析,产生SQL语法树,如果解析出错,跳转至301,重新接受SQL语句;
该步骤利用SQL解析模块对原始SQL进行解析,根据词法分析将SQL分解为不同的单词,通过语法分析生成语法树,类似过程如图6所示。
每一条SQL语句都将会解析为语法树结构。对于不符合相关SQL语法的语句,将会抛出错误提示,重新读取下一条语句。
303:对语法树进行分析,获取访问行为特征;
对语法树特定域进行分析,获取该SQL语句的数据库访问行为,包括数据库对象名称以及对其的操作。
1、select*from a where username=‘liming’and passwd=123456;
数据库访问行为如下:
数据库对象名称 | 类型 | 操作 | |
1 | a | 表 | 查询 |
2 | username | 列 | 查询 |
3 | passwd | 列 | 查询 |
2、select*from USER_CATALOG;
数据库访问行为如下:
数据库对象名称 | 类型 | 操作 | |
1 | USER_CATALOG | 表 | 查询 |
3、select*from person where cardNum=124 and name=‘li’and1=1;
数据库访问行为如下:
数据库对象名称 | 类型 | 操作 | |
1 | person | 表 | 查询 |
2 | cardNum | 列 | 查询 |
3 | name | 列 | 查询 |
4、insert into Employees(FirstName,LastName,Title)values(′Harry′,′Washington′,′Trainee′);
数据库访问行为如下:
数据库对象名称 | 类型 | 操作 | |
1 | Employees | 表 | 插入 |
2 | FirstName | 列 | 插入 |
3 | LastName, | 列 | 插入 |
4 | Title | 列 | 插入 |
5、update Employees set ReportsTo=5 WHERE ReportsTo=2;
数据库访问行为如下:
数据库对象名称 | 类型 | 操作 | |
1 | Employees | 表 | 更新 |
2 | ReportsTo | 列 | 更新 |
6、delete*from Employees where FirstName=‘Harry’
数据库访问行为如下:
数据库对象名称 | 类型 | 操作 | |
1 | Employees | 表 | 删除 |
2 | FirstName | 列 | 查询 |
304:根据预定规则对语法树进行裁剪,获取SQL语句的主干结构特征;
对语法树进行语法进行裁剪,成为规范语法树,获取SQL语句的主干结构。裁剪过程负责将SQL语句中用户输入部分,比如数据以及字符串,用通配符进行替换,同时将一些无用的节点删除。
对于select*from person where cardNum=124 and name=‘li’and1=1解析后的语法树。将用户输入字段(字符串、数字),用一些特殊通配符进行替换。我们假设将数字替换为‘$’,将输入字符串替换为‘&’,通过替换后,产生的规范语法树如图7所示。
通过语法树的裁剪,将用户输入部分进行替换,可以获取所有的SQL主干结构。
305:将所有不同的特征进行分类统计,加入知识库;
将步骤303得到的访问行为特征以及304得到的SQL主干结构,以一定的方式存储起来,分别加入知识库中的数据库行为池以及SQL池中。加入知识库的过程中需要将该特征与现有的知识库进行匹配,如果匹配成功说明存在相同特征,不需要加入,否则将该特征加入相应位置。
306:通过一段时间全面的学习,构建完整的知识库。
经过学习合法的SQL语句,知识库内的SQL池将会记录所有合法的SQL语句的不同的主干架构。数据库行为池将会记录所有的数据库访问行为,具体内容如下表所示:
编号 | 对象名称 | 对象类型 | 对象操作 |
1 | A | 表 | 查询 |
2 | Username | 列 | 查询 |
3 | Passwd | 列 | 查询 |
4 | USER_CATALOG | 表 | 查询 |
5 | Person | 表 | 查询 |
6 | cardNum | 列 | 查询 |
7 | Name | 列 | 查询 |
8 | Employees | 表 | 查询/插入/更新/删除 |
基于自学习的数据库SQL注入防护方法,过滤阶段负责在现实环境中,对所有经过的SQL语句与知识库进行匹配,根据匹配结果判断该SQL语句是否为合法的SQL语句。具体步骤如图2所示。下面以具体实例详细进行介绍。
401:接收一条SQL语句;
我们以如下几条SQL语句为具体实例:
1)select*from a where username=‘chenfeng’and passwd=123;
2)select*from USER_CATALOG where 1=1;
3)select*from person where age=24 and name=‘li’and 1=1;
402:对SQL语句进行解析,产生语法树,如果解析出错,跳转至407;
如学习阶段,对所有的SQL语句进行解析,获取语法树。对于不符合SQL语句的语句,直接判定为非法SQL语句。
403:对语法树进行分析,获取访问行为特征,将访问行为特征与知识库进行匹配,匹配不成功则跳转至步骤407,否则跳转至步骤404;
对于select*from a where username=‘chenfeng’and passwd=123;
数据库访问行为:
数据库对象名称 | 类型 | 操作 | |
1 | a | 表 | 查询 |
2 | username | 列 | 查询 |
3 | passwd | 列 | 查询 |
将访问行为与数据库行为池进行匹配。匹配过程参考图3。步骤902:对数据库对象名a,username,passwd,利用HASH算法,求hash值,利用hash值查找数据库行为池,找到具有相同名称的数据库对象。步骤903:检查该数据库对象行为是否匹配。通过匹配,该语句的数据库访问行为合法。
如上步骤,select*from USER_CATALOG where 1=1访问行为合法。而对于select*from person where age=24 and name=‘li’and 1=1,由于包含新的数据库对象age,导致数据库行为匹配不成功,跳至406。
404.根据预定规则对语法树进行裁剪,获取SQL语句的主干结构特征,将其与知识库进行匹配,匹配不成功跳转至步骤408,否则跳转至步骤405;
SQL语句1)和2)通过了数据库访问行为特征匹配,这一步通过获取SQL语句主干,进行SQL池的匹配。
SQL池的匹配过程参考图4。
分别利用两个不同的HASH函数,对规范的语法树的不用域求出两个不同的HASH值:hash1,hash2。以hash1为索引进行查找,缩小查找范围。最后同时比较hash1、hash2以判断是否存在完全相同SQL主干结构。
通过裁剪的语句1)的主干特征与SQL池匹配,而语句2)的主干特征不匹配。因此1)为合法跳至405,2)为非法,跳至406。
405.判定SQL语句合法,允许其通行;
406.SQL语句语法错误,判定该语句非法,产生报警信息。
407.访问行为不合法,判定SQL语句非法,产生报警信息;
408.主干结构不合法,判定SQL语句非法,产生报警信息。
如图5所示,新的基于自学习的数据库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语句进行解析。远程管理客户端通过与控制管理单元交互来监控管理整个系统。
Claims (10)
1、一种基于自学习的数据库SQL注入防护方法,其特征在于,包括以下步骤:
学习阶段:在安全环境下,学习所有的合法SQL语句,提取特征,从而构建知识库;
过滤阶段:在现实环境下,对所有经过的SQL语句与知识库进行匹配,根据匹配结果判断该SQL语句的合法性。
2、根据权利要求1所述的一种基于自学习的数据库SQL注入防护方法,其特征在于,所述的提取的SQL语句相关特征包括:
访问行为特征:包括SQL语句所涉及的所有数据库对象,以及对该对象的操作行为;
主干结构特征:SQL语法结构特征。
3、根据权利要求1所述的一种基于自学习的数据库SQL注入防护方法,其特征在于,所述学习阶段包括如下步骤:
301.接收一条SQL语句;
302.对SQL语句进行解析,产生SQL语法树,如果解析出错,跳转至步骤301,重新接受SQL语句;
303.对语法树进行分析,获取访问行为特征;
304.根据预定规则对语法树进行裁剪,获取SQL语句的主干结构特征;
305.将所有不同的特征进行分类统计,加入知识库;
306.通过一段时间全面的学习,构建完整的知识库。
4、根据权利要求1所述的一种基于自学习的数据库SQL注入防护方法,其特征在于,所述过滤阶段包括如下步骤:
401.接收一条SQL语句;
402.对SQL语句进行解析,产生语法树,如果解析出错,跳转至步骤406;
403.对语法树进行分析,获取访问行为特征,将访问行为特征与知识库进行匹配,匹配不成功则跳转至步骤407,否则跳转至步骤404;
404.根据预定规则对语法树进行裁剪,获取SQL语句的主干结构特征,将其与知识库进行匹配,匹配不成功跳转至步骤408,否则跳转至步骤405;
405.判定SQL语句合法,允许其通行;
406.SQL语句语法错误,判定该语句非法,产生报警信息。
407.访问行为不合法,判定SQL语句非法,产生报警信息;
408.主干结构不合法,判定SQL语句非法,产生报警信息。
5、根据权利要求3或者4所述的一种基于自学习的数据库SQL注入防护方法,其特征在于,
所述学习阶段步骤302或者过滤阶段步骤402中,对SQL语句进行解析,产生SQL语法树,具体解析包括:词法解析,语法解析以及语义解析。
6、根据权利要求3所述的一种基于自学习的数据库SQL注入防护方法,其特征在于,
所述学习阶段步骤303中,获取该SQL语句涉及到的所有的数据库对象以及对其的操作,数据库对象类型包括:表、列、视图、别名;操作行为包括:查询、插入、修改、删除、更新。
7、根据权利要求3所述的一种基于自学习的数据库SQL注入防护方法,其特征在于,
所述学习阶段步骤304中,根据预定规则对语法树进行裁剪,获取SQL语句的主干特征,裁剪过程负责将SQL语句中用户输入部分用通配符进行替换。
8、根据权利要求3所述的一种基于自学习的数据库SQL注入防护方法,其特征在于,
所述学习阶段步骤305中,将所有不同的特征进行分类统计加入知识库,加入知识库的过程中需要将该特征与现有的知识库进行匹配,如果匹配成功说明存在相同特征,不需要加入,否则将该特征加入相应位置。
9、根据权利要求4所述的一种基于自学习的数据库SQL注入防护方法,其特征在于,
所述过滤阶段步骤403中,将访问行为特征与知识库进行匹配,匹配过程包括如下步骤:
901.对SQL语法树进行分析,获取访问行为,具体包括涉及数据库访问对象以及对其的操作;
902.计算数据库对象名的HASH值,以HASH值为索引,找出相同数据库对象名称,如果存在相同数据库对象则跳至步骤903进行行为匹配,否则跳至步骤904;
903.比较该对象的操作行为,如果存在该行为则跳至步骤906,否则跳至步骤905;
904.匹配不成功,返回原因:不存在相同数据库对象;
905.匹配不成功,返回原因:数据对象的操作不合法;
906.匹配成功,返回。
10、根据权利要求4所述的一种基于自学习的数据库SQL注入防护方法,其特征在于,
所述过滤阶段步骤404中,将SQL主干结构特征与知识库进行匹配,匹配过程包括如下步骤:
1001.对解析后SQL语法树进行裁剪,形成规范语法树;
1002.计算语法树的两棵不同的子树的HASH值:hash1、hash2;
1003.以hash1为索引,进行查找,如果存在相同ha sh值则跳至步骤1004,否则跳至步骤1006;
1004.找出hash1相同的语法树,比较hash2,相同则跳至步骤1005,否则跳至步骤1006;
1005.匹配成功;
1006.匹配失败。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2009101812903A CN101609493A (zh) | 2009-07-21 | 2009-07-21 | 一种基于自学习的数据库sql注入防护方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2009101812903A CN101609493A (zh) | 2009-07-21 | 2009-07-21 | 一种基于自学习的数据库sql注入防护方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101609493A true CN101609493A (zh) | 2009-12-23 |
Family
ID=41483245
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2009101812903A Pending CN101609493A (zh) | 2009-07-21 | 2009-07-21 | 一种基于自学习的数据库sql注入防护方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101609493A (zh) |
Cited By (36)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101833620A (zh) * | 2010-04-28 | 2010-09-15 | 国网电力科学研究院 | 一种基于自定义安全jdbc驱动的数据库防护方法 |
CN102136051A (zh) * | 2011-05-06 | 2011-07-27 | 南开大学 | 一种应用SGM-SQL注入模型驱动web应用渗透测试的方法 |
CN102156740A (zh) * | 2011-04-15 | 2011-08-17 | 国都兴业信息审计系统技术(北京)有限公司 | Sql语句的处理方法及系统 |
CN102184371A (zh) * | 2011-04-15 | 2011-09-14 | 国都兴业信息审计系统技术(北京)有限公司 | Sql语句的数据库操作权限检测方法与系统 |
CN102413127A (zh) * | 2011-11-09 | 2012-04-11 | 中国电力科学研究院 | 一种数据库综合安全防护方法 |
CN102682047A (zh) * | 2011-10-18 | 2012-09-19 | 国网电力科学研究院 | 一种混合的sql注入防护方法 |
CN102833270A (zh) * | 2012-09-18 | 2012-12-19 | 山石网科通信技术(北京)有限公司 | Sql注入攻击的检测方法、装置和具有该装置的防火墙 |
CN103744802A (zh) * | 2013-12-20 | 2014-04-23 | 北京奇虎科技有限公司 | Sql注入攻击的识别方法及装置 |
CN103778185A (zh) * | 2013-12-27 | 2014-05-07 | 北京天融信软件有限公司 | 一种用于数据库审计系统的sql语句解析方法和系统 |
CN104090941A (zh) * | 2014-06-30 | 2014-10-08 | 江苏华大天益电力科技有限公司 | 一种数据库审计系统及其审计方法 |
CN104156439A (zh) * | 2014-08-12 | 2014-11-19 | 华北电力大学句容研究中心 | 一种远程运维智能审计的方法 |
CN104516882A (zh) * | 2013-09-26 | 2015-04-15 | 国际商业机器公司 | 确定sql语句的危害度的方法和设备 |
CN104809405A (zh) * | 2015-04-24 | 2015-07-29 | 广东电网有限责任公司信息中心 | 基于分级分类的结构化数据资产防泄露方法 |
CN104866780A (zh) * | 2015-04-24 | 2015-08-26 | 广东电网有限责任公司信息中心 | 基于分级分类的非结构化数据资产防泄露方法 |
CN105005736A (zh) * | 2015-07-20 | 2015-10-28 | 福建工程学院 | 一种体域网的sql注入攻击的检测方法及系统 |
CN106227812A (zh) * | 2016-07-21 | 2016-12-14 | 杭州安恒信息技术有限公司 | 一种数据库对象脚本安全风险的审计方法 |
CN106355094A (zh) * | 2016-07-08 | 2017-01-25 | 耿童童 | 一种基于语法变换的sql注入攻击防御系统及防御方法 |
CN106503557A (zh) * | 2016-07-08 | 2017-03-15 | 耿童童 | 基于动态变换的sql注入攻击防御系统及防御方法 |
CN106991322A (zh) * | 2016-01-21 | 2017-07-28 | 北京启明星辰信息安全技术有限公司 | 一种结构化查询语言sql注入攻击的检测方法和装置 |
CN107277057A (zh) * | 2017-08-03 | 2017-10-20 | 四川长虹电器股份有限公司 | 一种.net服务器上防止SQL注入的方法 |
CN107292167A (zh) * | 2017-06-27 | 2017-10-24 | 北京计算机技术及应用研究所 | 基于精简语法树的sql语句安全检测方法 |
CN107563193A (zh) * | 2017-08-28 | 2018-01-09 | 深信服科技股份有限公司 | 基于sql模板的数据库访问控制方法及系统 |
CN107566363A (zh) * | 2017-08-30 | 2018-01-09 | 杭州安恒信息技术有限公司 | 一种基于机器学习的sql注入攻击防护方法 |
CN107908965A (zh) * | 2017-11-14 | 2018-04-13 | 北京知道创宇信息技术有限公司 | 疑似sql注入类型的检测方法及装置 |
CN108540465A (zh) * | 2018-03-30 | 2018-09-14 | 北京百度网讯科技有限公司 | Sql注入拦截检测方法、装置、设备及计算机可读介质 |
CN108573152A (zh) * | 2017-03-14 | 2018-09-25 | 北京京东尚科信息技术有限公司 | 检测sql注入攻击的方法、装置、服务器和存储介质 |
CN108763887A (zh) * | 2018-05-23 | 2018-11-06 | 腾讯科技(深圳)有限公司 | 数据库操作请求验证方法、装置、服务器及存储介质 |
CN108806797A (zh) * | 2018-06-27 | 2018-11-13 | 思派(北京)网络科技有限公司 | 一种医疗数据的处理方法及系统 |
CN108959967A (zh) * | 2018-07-16 | 2018-12-07 | 杭州安恒信息技术股份有限公司 | 一种防数据库敏感数据泄漏的方法及系统 |
CN109992989A (zh) * | 2017-12-29 | 2019-07-09 | 西普霍特公司 | 使用抽象语法树的用于查询注入检测的系统 |
CN110059480A (zh) * | 2019-03-13 | 2019-07-26 | 深圳壹账通智能科技有限公司 | 网络攻击行为监控方法、装置、计算机设备及存储介质 |
CN111314388A (zh) * | 2020-03-26 | 2020-06-19 | 北京百度网讯科技有限公司 | 用于检测sql注入的方法和装置 |
CN111857721A (zh) * | 2020-03-30 | 2020-10-30 | 马上消费金融股份有限公司 | Sql语句的验证方法、数据获取方法、设备及存储装置 |
CN112685779A (zh) * | 2020-12-31 | 2021-04-20 | 天津南大通用数据技术股份有限公司 | 基于数据库执行select语句主要关键字的静态可信判定方法 |
CN112989403A (zh) * | 2019-12-18 | 2021-06-18 | 拓尔思天行网安信息技术有限责任公司 | 一种数据库破坏的检测方法、装置、设备及存储介质 |
US12111916B2 (en) | 2021-11-16 | 2024-10-08 | Saudi Arabian Oil Company | SQL proxy analyzer to detect and prevent unauthorized SQL queries |
-
2009
- 2009-07-21 CN CNA2009101812903A patent/CN101609493A/zh active Pending
Cited By (52)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101833620A (zh) * | 2010-04-28 | 2010-09-15 | 国网电力科学研究院 | 一种基于自定义安全jdbc驱动的数据库防护方法 |
CN102156740A (zh) * | 2011-04-15 | 2011-08-17 | 国都兴业信息审计系统技术(北京)有限公司 | Sql语句的处理方法及系统 |
CN102184371A (zh) * | 2011-04-15 | 2011-09-14 | 国都兴业信息审计系统技术(北京)有限公司 | Sql语句的数据库操作权限检测方法与系统 |
CN102156740B (zh) * | 2011-04-15 | 2013-02-13 | 国都兴业信息审计系统技术(北京)有限公司 | Sql语句的处理方法及系统 |
CN102136051A (zh) * | 2011-05-06 | 2011-07-27 | 南开大学 | 一种应用SGM-SQL注入模型驱动web应用渗透测试的方法 |
CN102682047A (zh) * | 2011-10-18 | 2012-09-19 | 国网电力科学研究院 | 一种混合的sql注入防护方法 |
CN102413127A (zh) * | 2011-11-09 | 2012-04-11 | 中国电力科学研究院 | 一种数据库综合安全防护方法 |
CN102833270A (zh) * | 2012-09-18 | 2012-12-19 | 山石网科通信技术(北京)有限公司 | Sql注入攻击的检测方法、装置和具有该装置的防火墙 |
CN104516882A (zh) * | 2013-09-26 | 2015-04-15 | 国际商业机器公司 | 确定sql语句的危害度的方法和设备 |
CN104516882B (zh) * | 2013-09-26 | 2018-02-06 | 国际商业机器公司 | 确定sql语句的危害度的方法和设备 |
CN103744802B (zh) * | 2013-12-20 | 2017-05-24 | 北京奇安信科技有限公司 | Sql注入攻击的识别方法及装置 |
CN103744802A (zh) * | 2013-12-20 | 2014-04-23 | 北京奇虎科技有限公司 | Sql注入攻击的识别方法及装置 |
CN103778185A (zh) * | 2013-12-27 | 2014-05-07 | 北京天融信软件有限公司 | 一种用于数据库审计系统的sql语句解析方法和系统 |
CN104090941B (zh) * | 2014-06-30 | 2017-08-25 | 北京华电天益信息科技有限公司 | 一种数据库审计系统及其审计方法 |
CN104090941A (zh) * | 2014-06-30 | 2014-10-08 | 江苏华大天益电力科技有限公司 | 一种数据库审计系统及其审计方法 |
CN104156439A (zh) * | 2014-08-12 | 2014-11-19 | 华北电力大学句容研究中心 | 一种远程运维智能审计的方法 |
CN104156439B (zh) * | 2014-08-12 | 2017-06-09 | 华北电力大学 | 一种远程运维智能审计的方法 |
CN104809405B (zh) * | 2015-04-24 | 2018-06-01 | 广东电网有限责任公司信息中心 | 基于分级分类的结构化数据资产防泄露方法 |
CN104866780B (zh) * | 2015-04-24 | 2018-01-05 | 广东电网有限责任公司信息中心 | 基于分级分类的非结构化数据资产防泄露方法 |
CN104866780A (zh) * | 2015-04-24 | 2015-08-26 | 广东电网有限责任公司信息中心 | 基于分级分类的非结构化数据资产防泄露方法 |
CN104809405A (zh) * | 2015-04-24 | 2015-07-29 | 广东电网有限责任公司信息中心 | 基于分级分类的结构化数据资产防泄露方法 |
CN105005736A (zh) * | 2015-07-20 | 2015-10-28 | 福建工程学院 | 一种体域网的sql注入攻击的检测方法及系统 |
CN106991322A (zh) * | 2016-01-21 | 2017-07-28 | 北京启明星辰信息安全技术有限公司 | 一种结构化查询语言sql注入攻击的检测方法和装置 |
CN106503557A (zh) * | 2016-07-08 | 2017-03-15 | 耿童童 | 基于动态变换的sql注入攻击防御系统及防御方法 |
CN106503557B (zh) * | 2016-07-08 | 2019-10-08 | 北京卫达信息技术有限公司 | 基于动态变换的sql注入攻击防御系统及防御方法 |
CN106355094A (zh) * | 2016-07-08 | 2017-01-25 | 耿童童 | 一种基于语法变换的sql注入攻击防御系统及防御方法 |
CN106355094B (zh) * | 2016-07-08 | 2019-02-22 | 北京卫达信息技术有限公司 | 一种基于语法变换的sql注入攻击防御系统及防御方法 |
CN106227812A (zh) * | 2016-07-21 | 2016-12-14 | 杭州安恒信息技术有限公司 | 一种数据库对象脚本安全风险的审计方法 |
CN106227812B (zh) * | 2016-07-21 | 2019-06-21 | 杭州安恒信息技术股份有限公司 | 一种数据库对象脚本安全风险的审计方法 |
CN108573152A (zh) * | 2017-03-14 | 2018-09-25 | 北京京东尚科信息技术有限公司 | 检测sql注入攻击的方法、装置、服务器和存储介质 |
CN107292167B (zh) * | 2017-06-27 | 2020-03-10 | 北京计算机技术及应用研究所 | 基于精简语法树的sql语句安全检测方法 |
CN107292167A (zh) * | 2017-06-27 | 2017-10-24 | 北京计算机技术及应用研究所 | 基于精简语法树的sql语句安全检测方法 |
CN107277057A (zh) * | 2017-08-03 | 2017-10-20 | 四川长虹电器股份有限公司 | 一种.net服务器上防止SQL注入的方法 |
CN107563193A (zh) * | 2017-08-28 | 2018-01-09 | 深信服科技股份有限公司 | 基于sql模板的数据库访问控制方法及系统 |
CN107566363A (zh) * | 2017-08-30 | 2018-01-09 | 杭州安恒信息技术有限公司 | 一种基于机器学习的sql注入攻击防护方法 |
CN107908965A (zh) * | 2017-11-14 | 2018-04-13 | 北京知道创宇信息技术有限公司 | 疑似sql注入类型的检测方法及装置 |
CN109992989B (zh) * | 2017-12-29 | 2023-10-13 | 西普霍特公司 | 使用抽象语法树的用于查询注入检测的系统 |
US11558418B2 (en) | 2017-12-29 | 2023-01-17 | Cyphort Inc. | System for query injection detection using abstract syntax trees |
CN109992989A (zh) * | 2017-12-29 | 2019-07-09 | 西普霍特公司 | 使用抽象语法树的用于查询注入检测的系统 |
US11108817B2 (en) | 2018-03-30 | 2021-08-31 | Beijing Baidu Netcom Science And Technology Co., Ltd. | SQL injection interception detection method and device, apparatus and computer readable medium |
CN108540465A (zh) * | 2018-03-30 | 2018-09-14 | 北京百度网讯科技有限公司 | Sql注入拦截检测方法、装置、设备及计算机可读介质 |
CN108763887A (zh) * | 2018-05-23 | 2018-11-06 | 腾讯科技(深圳)有限公司 | 数据库操作请求验证方法、装置、服务器及存储介质 |
CN108806797A (zh) * | 2018-06-27 | 2018-11-13 | 思派(北京)网络科技有限公司 | 一种医疗数据的处理方法及系统 |
CN108959967A (zh) * | 2018-07-16 | 2018-12-07 | 杭州安恒信息技术股份有限公司 | 一种防数据库敏感数据泄漏的方法及系统 |
CN110059480A (zh) * | 2019-03-13 | 2019-07-26 | 深圳壹账通智能科技有限公司 | 网络攻击行为监控方法、装置、计算机设备及存储介质 |
CN112989403A (zh) * | 2019-12-18 | 2021-06-18 | 拓尔思天行网安信息技术有限责任公司 | 一种数据库破坏的检测方法、装置、设备及存储介质 |
CN112989403B (zh) * | 2019-12-18 | 2023-09-29 | 拓尔思天行网安信息技术有限责任公司 | 一种数据库破坏的检测方法、装置、设备及存储介质 |
CN111314388A (zh) * | 2020-03-26 | 2020-06-19 | 北京百度网讯科技有限公司 | 用于检测sql注入的方法和装置 |
CN111857721A (zh) * | 2020-03-30 | 2020-10-30 | 马上消费金融股份有限公司 | Sql语句的验证方法、数据获取方法、设备及存储装置 |
CN111857721B (zh) * | 2020-03-30 | 2021-09-17 | 马上消费金融股份有限公司 | Sql语句的验证方法、数据获取方法、设备及存储装置 |
CN112685779A (zh) * | 2020-12-31 | 2021-04-20 | 天津南大通用数据技术股份有限公司 | 基于数据库执行select语句主要关键字的静态可信判定方法 |
US12111916B2 (en) | 2021-11-16 | 2024-10-08 | Saudi Arabian Oil Company | SQL proxy analyzer to detect and prevent unauthorized SQL queries |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101609493A (zh) | 一种基于自学习的数据库sql注入防护方法 | |
CN102682047A (zh) | 一种混合的sql注入防护方法 | |
Elgesem et al. | Structure and content of the discourse on climate change in the blogosphere: The big picture | |
CN103297435B (zh) | 一种基于web日志的异常访问行为检测方法与系统 | |
CN106355094B (zh) | 一种基于语法变换的sql注入攻击防御系统及防御方法 | |
Bercovitch et al. | HoneyGen: An automated honeytokens generator | |
CN102185930B (zh) | 一种sql注入漏洞检测方法 | |
CN103026345B (zh) | 用于事件监测优先级的动态多维模式 | |
Jang et al. | Detecting SQL injection attacks using query result size | |
CN113486351A (zh) | 一种民航空管网络安全检测预警平台 | |
CN106778253A (zh) | 基于大数据的威胁情景感知信息安全主动防御模型 | |
CN111190881A (zh) | 一种数据治理方法和系统 | |
Landauer et al. | A framework for cyber threat intelligence extraction from raw log data | |
Li et al. | Security attack analysis using attack patterns | |
CN102833270A (zh) | Sql注入攻击的检测方法、装置和具有该装置的防火墙 | |
CN113765881A (zh) | 异常网络安全行为的检测方法、装置、电子设备及存储介质 | |
CN106503557A (zh) | 基于动态变换的sql注入攻击防御系统及防御方法 | |
WO2009011496A3 (en) | Security system using the data masking and data security method thereof | |
CN110020687A (zh) | 基于操作人员态势感知画像的异常行为分析方法及装置 | |
CN107239563A (zh) | 舆情信息动态监控方法 | |
CN103955644B (zh) | 一种基于终端自启动项的静态木马检测方法 | |
Otegui et al. | On the dates of GBIF mobilised primary biodiversity records | |
CN115630404A (zh) | 一种数据安全治理服务方法 | |
CN1952947A (zh) | 一种网站反克隆的系统和方法 | |
Durigan et al. | Why species composition is not a good indicator to assess restoration success? Counter‐response to Reid (2015) |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Open date: 20091223 |