[发明专利]基于精简语法树的SQL语句安全检测方法有效
申请号: | 201710500205.X | 申请日: | 2017-06-27 |
公开(公告)号: | CN107292167B | 公开(公告)日: | 2020-03-10 |
发明(设计)人: | 吴朝雄;石波;沈德峰;胡佳;谢小明;郭江 | 申请(专利权)人: | 北京计算机技术及应用研究所 |
主分类号: | G06F21/55 | 分类号: | G06F21/55;G06F16/242;H04L29/06 |
代理公司: | 中国兵器工业集团公司专利中心 11011 | 代理人: | 刘瑞东 |
地址: | 100854*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明涉及一种基于精简语法树的SQL语句安全检测方法,属于网络安全技术领域。本发明在对SQL语句进行语法树构建的过程中,采用边构建边分析的策略,利用精简SQL语法结构树实现对复杂SQL语句攻击的安全检测。同时采用统计分析方法,挖掘应用系统中正常SQL语句行为模式,为未知SQL语句行为的安全检测提供检测模板。 | ||
搜索关键词: | 基于 精简 语法 sql 语句 安全 检测 方法 | ||
【主权项】:
一种基于精简语法树的SQL语句安全检测方法,其特征在于,包括以下步骤:步骤1:获取网络流量,并解析获取用户请求的SQL语句信息;步骤2:将SQL语句中包含的信息分为关键字、运算符号、标识信息三类分词信息,其中,关键字为SQL语法体系中的固有属性和信息,标识信息包括数字、字母、汉字中任一类信息或者任意几种组合形成的信息,根据三类分词信息,通过词法分析工具完成对所述SQL语句信息的分词切分,输出分词结果集合;步骤3:对分词结果集合进行语法检测和敏感词分析:3.1对分词中的关键字的大小写进行统一,采用ASCII码转换,将所有关键字统一转换为大写字母或小写字母;3.2采用LIFO的方法,检测分析‘’、“”、()、{}、<>、/**/是否完整,若否,则认为该SQL语句存在异常,转入步骤6,若是,则执行3.3;3.3依次取分词结果集合R中的任一元素与敏感词进行比较,如果集合R中存在元素和敏感词相同,则认为该SQL语句存在异常,转入步骤6,否则转步骤4;步骤4:利用YACC语法器进行SQL语法树构造,在YACC语法器的构建过程中,屏蔽使用应用系统中不经常出现的语法体系,包括增、删、改、查这些语法体系,同时采用前序的递归方式构造语法树,并在构造语法树的过程中对节点信息进行攻击特征检测分析,形成语法树,在攻击特征检测分析过程中,若发现异常,则停止构造语法树;在语法树构造过程中将三类分词信息用不同的符号进行标记,用三角形代表运算符;在攻击特征检测过程中,根据攻击特征库中攻击特征信息,仅针对父节点为三角形的节点进行检测,检测时采用中序递归的方法对三角形节点的左子树和右子树信息进行分析和比较;4.1当三角形节点S中内容为运算符号时,递归搜索判断S左子树S1,直至搜索到S1左子树中深度最大的根节点SL的信息内容不为运算符号,判断SL中的信息是否为常量信息,如果是,则认为该SQL语句存在异常,转入步骤6;如果不是,则计算S1树的运算表达式结果,转入4.2;4.2当三角形节点S右子树S2中根节点中信息为运算符号时,递归搜索判断S右子树S2,直至搜索到S2的左子树中深度最大的根节点SR的信息内容不为运算符号,计算S2树中的运算表达式结果;4.3,比较S1与S2的运算表达式结果,如果S1与S2的比较结果出现永真或者永假,则认为该SQL语句存在异常,转入步骤6,否则转入步骤5;步骤5:对历史SQL语句进行统计分析,采用统计分析方法挖掘应用系统中所有SQL语句的正常行为模式,形成正常语法树模式,将要执行的SQL语句的语法树中节点信息与正常模式行为的SQL语法树的相应节点对比分析,判断相应节点之间的信息格式是否一致,如果不一致,则可认为该SQL语句存在异常,转入步骤6;如果一致,则认为该SQL语句不存在异常;步骤6:对检测到的异常SQL语句进行报警。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京计算机技术及应用研究所,未经北京计算机技术及应用研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201710500205.X/,转载请声明来源钻瓜专利网。