[发明专利]SQL注入缺陷检测方法、系统、设备及存储介质有效
申请号: | 201811015751.5 | 申请日: | 2018-08-31 |
公开(公告)号: | CN109426722B | 公开(公告)日: | 2021-06-29 |
发明(设计)人: | 肖枭;时清凯;周金果;范刚 | 申请(专利权)人: | 深圳市源伞新科技有限公司 |
主分类号: | G06F21/56 | 分类号: | G06F21/56;G06F21/57 |
代理公司: | 北京博思佳知识产权代理有限公司 11415 | 代理人: | 林祥 |
地址: | 518055 广东省深圳市南山区西丽街道*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | sql 注入 缺陷 检测 方法 系统 设备 存储 介质 | ||
1.一种SQL注入缺陷检测方法,其特征在于,所述方法包括如下步骤:
输入待检测的程序;所述程序为SQL语句,所述程序中包括用户输入语句和查询语句;
以所述用户输入语句作为数据流的来源节点,以所述查询语句作为数据流入的对象节点,生成待检测的程序中各个函数的符号表达式图,所述符号表达式图包括节点和连接节点的边,所述节点包括值节点和运算符节点,所述边包括数据依赖性边和控制依赖性边,其中,所述数据依赖性边是将节点连接到与其有直接数据依赖关系的值节点的有方向性的边,所述控制依赖性边是当存在限定变量的条件时将变量连接到条件的有方向性的边;以及
检测各个函数的符号表达式图中是否存在从用户输入语句节点到查询语句节点之间的路径且路径约束条件均满足,如果是,则发现SQL注入缺陷;其中,所述检测各个函数的符号表达式图中是否存在从用户输入节点到查询语句节点之间的路径且路径约束条件均满足,包括如下步骤:
对于各个函数的符号表达式图,从用户输入节点开始对所述符号表达式图进行逆向的深度优先遍历;
遍历到达查询语句节点时,根据所述控制依赖性边查找用户输入节点到查询语句节点之间的路径约束条件,并判断路径约束条件是否均满足,如果是,则发现SQL注入缺陷。
2.根据权利要求1所述的SQL注入缺陷检测方法,其特征在于,所述方法还包括如下步骤:
生成各个函数的函数摘要,所述函数摘要包括符号摘要,所述符号摘要包括函数输入、函数输出以及函数输入节点到函数输出节点之间路径的约束集。
3.根据权利要求2所述的SQL注入缺陷检测方法,其特征在于,对于一函数的符号表达式图,如果存在从用户输入节点到查询语句节点的路径,则该函数的函数摘要还包括输入摘要、输出摘要和传递摘要,其中:
所述输入摘要包括函数输入到查询语句节点的摘要;
所述输出摘要包括用户输入节点到函数输出的摘要;
所述传递摘要包括函数输入到用户输入节点的摘要。
4.根据权利要求2或3所述的SQL注入缺陷检测方法,其特征在于,判断路径约束条件是否均满足,包括如下步骤:
判断当前检测函数中从用户输入节点到查询语句节点之间的路径中是否存在被调函数;
如果是,则将所述被调函数的函数摘要嵌入当前检测函数的符号表达式图,判断当前检测函数中与该被调函数对应的路径约束条件是否满足。
5.根据权利要求4所述的SQL注入缺陷检测方法,其特征在于,生成待检测的程序中各个函数的符号表达式图,包括如下步骤:
从所述待检测的程序的底层函数依次向上层函数建立各个函数的符号表达式图;
检测各个函数的符号表达式图时,从底层函数依次向上层函数检测,并从底层函数依次向上层函数生成函数摘要;
检测上层函数的符号表达式图时,将该上层函数的下层函数的函数摘要嵌入该上层函数的符号表达式图中。
6.根据权利要求3所述的SQL注入缺陷检测方法,其特征在于,
所述输入摘要包括函数输入、函数输入节点到查询语句节点之间路径的约束、分析结果报告、生成报告摘要的相应描述和检查器特定信息;
所述输出摘要包括用户输入、用户输入节点到函数输出节点之间路径的约束、分析结果报告、生成报告摘要的相应描述和检查器特定信息;
所述传递摘要包括函数输入、函数输入节点到用户输入节点之间路径的约束、分析结果报告、生成报告摘要的相应描述和检查器特定信息。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于深圳市源伞新科技有限公司,未经深圳市源伞新科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201811015751.5/1.html,转载请声明来源钻瓜专利网。