[发明专利]基于精简语法树的SQL语句安全检测方法有效
| 申请号: | 201710500205.X | 申请日: | 2017-06-27 |
| 公开(公告)号: | CN107292167B | 公开(公告)日: | 2020-03-10 |
| 发明(设计)人: | 吴朝雄;石波;沈德峰;胡佳;谢小明;郭江 | 申请(专利权)人: | 北京计算机技术及应用研究所 |
| 主分类号: | G06F21/55 | 分类号: | G06F21/55;G06F16/242;H04L29/06 |
| 代理公司: | 中国兵器工业集团公司专利中心 11011 | 代理人: | 刘瑞东 |
| 地址: | 100854*** | 国省代码: | 北京;11 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 基于 精简 语法 sql 语句 安全 检测 方法 | ||
1.一种基于精简语法树的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语句进行报警。
2.如权利要求1所述的方法,其特征在于,步骤1中,通过流量捕获插件libpcap或winpcap获取网络流量,并根据TCP/IP协议解析获取用户请求的SQL语句信息。
3.如权利要求1所述的方法,其特征在于,步骤2中,按标准SQL语法体系,将SQL语句中包含的信息分为关键字、运算符号、标识信息三类分词信息。
4.如权利要求1所述的方法,其特征在于,步骤2中,将三类信息中的任何一项信息称为一个词块,将按照三类分词信息构造的词块集合作为词法分析工具的输入,完成对SQL语句的分词切分。
5.如权利要求1所述的方法,其特征在于,步骤2中,所述词法分析工具采用Lex或Flex工具。
6.如权利要求1所述的方法,其特征在于,步骤3中,所述语法检测包括对SQL语句中单引号、双引号、括号是否正确成对匹配进行检测,所述敏感词包括‘;’、‘==’、‘--’、‘||’、‘/**/’、‘SYSTEM’、‘DBA’、‘drop’、‘truncate’。
7.如权利要求1至6中任一项所述的方法,其特征在于,步骤6中还对异常SQL语句进行阻断或隔离处理。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京计算机技术及应用研究所,未经北京计算机技术及应用研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710500205.X/1.html,转载请声明来源钻瓜专利网。





