[发明专利]基于特征模式识别的sql注入检测方法在审
申请号: | 201710627467.2 | 申请日: | 2017-07-27 |
公开(公告)号: | CN107451473A | 公开(公告)日: | 2017-12-08 |
发明(设计)人: | 陈建培;闻建霞;柳遵梁 | 申请(专利权)人: | 杭州美创科技有限公司 |
主分类号: | G06F21/55 | 分类号: | G06F21/55;H04L29/06 |
代理公司: | 杭州杭诚专利事务所有限公司33109 | 代理人: | 尉伟敏,阎忠华 |
地址: | 310011 浙江省杭州市拱*** | 国省代码: | 浙江;33 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 特征 模式识别 sql 注入 检测 方法 | ||
技术领域
本发明涉及网络安全技术领域,尤其是涉及一种基于特征模式识别的sql注入检测方法。
背景技术
Sql注入就是通过把sql命令插入到应用程序的用户输入从而影响查询字符串,最终达到欺骗服务器执行恶意的sql命令。
当应用程序使用用户输入内容来动态构造sql语句用以访问数据库时,会发生sql注入攻击。许多应用程序在编写时,没有对用户输入的内容做合法性过滤或者过滤不完整,使应用程序存在sql注入的安全隐患。攻击者通过sql注入达到获取敏感信息,破坏应用数据,直至控制整个服务器。
现有的sql注入攻击的识别方案的缺陷:1.都是针对web应用,无法对非web应用提供支持。2.通过http协议的url,post信息等web浏览器提交到web服务启的信息做sql注入识别,只有sql语句的片段没有完整的sql语句。3.从http协议获取的信息不能区分是构造sql语句的信息还是其他信息,例如url中存在sql注入语句但是这部分数据并没有被用来构造sql语句容易误报。4.使用正则表达式进行识别效率低,为了提高效率仅做部分字符的检测容易漏报。5.由于从http协议获取的不是完整sql语句,使用词法分析的识别方法可能导致语句中的语法单元和数据不能正确区分从而导致误报。
发明内容
本发明的发明目的是为了克服现有技术中的使用词法分析的识别方法可能导致语句中的语法单元和数据不能正确区分,导致误报的不足,提供了一种基于特征模式识别的sql注入检测方法。
为了实现上述目的,本发明采用以下技术方案:
一种基于特征模式识别的sql注入检测方法,包括如下步骤:
(1-1)基于sql语法解析和sql语义解析生成sql注入特征模式抽象语法树库;
(1-2)获取应用程序到数据库的网络流量,根据数据库协议解析网络流量,从中提取完整的sql语句;
(1-3)对获取的sql语句进行SQL语句语法解析,获取sql语句的语法单元;
(1-4)对sql语句的语法单元进行sql语义解析,执行语义计算,生成计算简化过的目标抽象语法树;
(1-5)将计算生成的目标抽象语法树与sql注入特征模式抽象语法树库进行匹配,如果特征模式抽象语法树库中任一个特征模式抽象语法树是目标抽象语法树的子树,则做出存在sql注入攻击的判断。
本发明支持所有应用不仅限于web应用,能够获取完整的sql语句从而减少漏报,能够排除不是sql语句的内容从而减少误报,基于抽象语法树的比较而不是字符比较,极大提高了工作效率。
作为优选,所述sql注入特征模式抽象语法树库是由语法分析、语义分析、语义计算后生成的抽象语法树集合。
作为优选,获取应用程序到数据库的网络流量包括应用程序到数据库的所有流量。
作为优选,从应用程序到数据库的网络流量提取完整sql语句的方法为根据各种特定的数据库协议解析提取。
作为优选,sql语句的语法单元包含保留关键字、常量、变量、标识符、数据类型、函数、表达式、运算符和注释。
作为优选,语义计算包含变量替换,常量替换,函数计算,表达式计算和运算符计算。
作为优选,特征库匹配的过程为抽象语法树的子树匹配。
因此,本发明具有如下有益效果:
1.支持所有应用不仅限于web应用。
2.能够获取完整的sql语句从而减少漏报。
3.能够排除不是sql语句的内容从而减少误报。
4.基于抽象语法树的比较而不是字符比较,极大提高了工作效率。
附图说明
图1是本发明的一种流程图。
具体实施方式
下面结合附图和具体实施方式对本发明做进一步的描述。
图1为本实施例的一种基于特征模式识别的sql注入检测方法,包括以下步骤:
1.基于sql语法解析和sql语义解析生成sql注入特征模式抽象语法树库:
经过预防解析得到如下语法元素:
A.关键字,sql语句的保留关键字例如select,from等。
B.常量,sql语句中的常量值例如字符常量’aa’,数字常量123等。
C.变量,sql语句中使用的变量例如绑定变量。
D.标识符,sql语句中的标识符例如表名,字段名等。
E.数据类型,sql语句中对象的数据类型,例如字符类型,数字类型,日期类型等。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于杭州美创科技有限公司,未经杭州美创科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710627467.2/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种防偏移的铸造模具
- 下一篇:一种凸轮轴的可调式生产模具