当前位置: 首页 > 专利查询>燕山大学专利>正文

基于静态和动态执行的二阶SQL注入防御和检测方法技术

技术编号:31790321 阅读:11 留言:0更新日期:2022-01-08 10:47
本发明专利技术公开了基于静态和动态执行的二阶SQL注入防御和检测方法,包括静态分析模块和动态执行模块,静态分析模块对SQL语句添加标识符;动态执行模块作用于web应用执行过程中,用于解析静态分析模块添加的标识符,识别出SQL语句中包含的攻击字符,并使用字符转义或字符截取的手段对其进行防御。本发明专利技术通过混合静态分析和基于代理的动态执行的方法,实现通用的对二阶SQL注入的检测防御,提高检测的准确性,误报率较低,保护web应用和其后台数据库的安全。的安全。的安全。

【技术实现步骤摘要】
基于静态和动态执行的二阶SQL注入防御和检测方法


[0001]本专利技术涉及Web应用安全
,尤其是基于静态和动态执行的二阶SQL注入防御和检测方法。

技术介绍

[0002]根据Common Weakness Enumeration(CWE)和Open Web Application Security Project 2017(OWASP)最近发布的数据,Structured Query Language(SQL)注入漏洞仍然严重的威胁Web应用的安全。通过SQL注入漏洞,攻击者能够窃取数据库的数据、删除信息、获取访问服务器的权限等。SQL注入主要包含一阶SQL注入和二阶SQL注入两种形式,针对前者已有大量的研究,但对二阶SQL注入漏洞的防御和检测方法较少。
[0003]现有技术针对SQL注入主要遵循Secure SDLC的原则,该原则由三个阶段组成:编码阶段、测试阶段和部署阶段。在编码阶段,安全编码规范方法能有效预防SQL注入的发生,但这主要依赖于开发人员的工作经验,代码质量难以保证,如是否使用了JDBC的PreparedStatement对象来防止恶意输入。在测试阶段,SQL注入防范常见方法有代码审计、基于SQL注入的测试等。代码审计是通过污点分析、敏感数据流等一些静态分析方式对Web应用的源代码进行分析,寻找出SQL注入的漏洞点,但是该种方式由于未使用实际的攻击用例进行测试,其检测结果存在较高的误报,还需要人工进一步验证;而基于SQL注入的测试则是通过对源代码的静态分析识别出可疑漏洞点(SEPs),然后对这些SEPs使用攻击用例进行测试,该种方式相比代码审计的方式,能有效降低误报,但对SEPs的处理仍然存在一定的缺陷,例如,存储在数据库、会话Cookies,sessions中的恶意字符串是否进行了检查,该SEPs往往会导致二阶SQL注入漏洞。部署阶段的SQL注入防范有数据库安全加固、Web Application Firewall(WAF)和Intrusion Detection Systems(IDS)/Intrusion Prevention System(IPS)等几种类型。数据库安全加固通过拦截后端数据库接受的SQL语句的方式对SQL注入进行防御和检测,该种方式较为直接,简单有效。WAF对来自Web应用程序客户端的各类请求进行内容检测和验证,确保其安全性与合法性,对非法的请求予以实时阻断,从而对各类网站站点进行有效防护,但难以对攻击漏洞进行检测和定位,且需定时检查更新策略。IDS/IPS是通过一定的安全策略,对软硬件、网络、系统的运行状况或流量进行监控,尽可能发现或中断各种攻击企图、攻击行为或者攻击结果,以保证网络系统资源的机密性、完整性和可用性,但是现有的防御策略总是落后于未知类型攻击。
[0004]由此可见,上述的技术存在误报率高、检测防御策略有限的问题,需要一种通用的检测防御方法且准确性高的方法来克服现有方法存在的缺点。

技术实现思路

[0005]本专利技术需要解决的技术问题是提供基于静态和动态执行的二阶SQL注入防御和检测方法。通过混合静态分析和基于代理的动态分析的方法,实现通用的对二阶SQL注入的检测防御,提高检测的准确性。
[0006]为解决上述技术问题,本专利技术所采用的技术方案是:基于静态和动态执行的二阶SQL注入防御和检测方法,包括静态分析模块和动态执行模块,所述静态分析模块对SQL语句添加标识符;所述动态执行模块是基于代理的作用于web应用执行过程中,用于解析静态分析模块添加的标识符,识别出SQL语句中包含的攻击字符,并使用字符转义或字符截取的手段对其进行防御。
[0007]本专利技术技术方案的进一步改进在于:所述静态分析模块操作步骤如下:
[0008]S1、扫描Web应用源码,根据SQL执行函数定位源代码中的SQL语句并判别其所属的语句类型,然后通过SQL语句第一个保留字映射为其添加类型标识符T;
[0009]S2、根据SQL语句的条件保留字cond、条件连接保留字conn和逻辑操作符保留字oper划分SQL语句,通过类型标识符T进行提取出所有的与SQL注入相关的变量称为χ;
[0010]S3、通过正则表达式定位χ中各个变量的填充语句确定其数据源并以ψ作为数据源标识符;
[0011]S4、利用预设明文θ和私钥pKey生成cond、conn和oper的标识符φ,并修改原SQL语句形成句内标记;
[0012]S5、组合标识符T、ψ和明文θ,形成SQL语句的头标记Ht。
[0013]本专利技术技术方案的进一步改进在于:所述步骤S1中类型标识符T与SQL语句第一个保留字关系如下:
[0014][0015]本专利技术技术方案的进一步改进在于:所述步骤S2中条件保留字cond、条件连接保留字conn和逻辑操作符保留字oper与T的关系如下:
[0016][0017][0018][0019]本专利技术技术方案的进一步改进在于:所述步骤S3中数据源ψ=0、1或2,其取值满足如下条件:
[0020]0‑
常量,是指变量在当前SQL语句中是由固定的字符或者数字构成的;
[0021]1‑
用户的输入值,是指变量是通过用户发起的GET请求、POST请求或获取外部文件系统用户的预设值;
[0022]2‑
非用户输入值,是指变量是通过SQL语句从后台数据库读取的值、从Cookie,Session中取值或获取上传文件的文件名,该种方式获取的值和二阶SQL注入密切相关。
[0023]本专利技术技术方案的进一步改进在于:所述步骤S4中句内标识符φ由预设明文θ和私钥pKey是生成的,使用了MD5算法和异或操作,生成公式如下:
[0024][0025]本专利技术技术方案的进一步改进在于:所述步骤S5中SQL语句的头标记Ht公式为:
[0026]Ht=[existT+ψ1+...+ψ
n
+θ]ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(6)。
[0027]本专利技术技术方案的进一步改进在于:所述动态分析模块操作步骤如下:
[0028]K1、通过代理拦截含有标识符的SQL语句,提取SQL语句的Ht中的SQL语句类型T、数据源标识符ψ和明文θ;
[0029]K2、根据θ和pKey计算出保留字标识符φ解析SQL语句并提取出包含真实值的变量集V;
[0030]K3、遍历V,对单个v
i
进行恶意字符的检测,通过ψ和v
i
是否含有改变SQL语句语义的字符来综合检测SQL注入漏洞;如果被检测为SQL注入漏洞,则对该v
i
进行恶意字符的防御操作,使SQL语句保持其本质语义,以达到防御的目的;
[0031]K4、移除SQL语句中的标识符,将其恢复成可被数据库解析执行的标准SQL。
[0032]本专利技术技术方案的进一步改进在于:所述步骤K3中恶意字符的防御操作是先判断v
i
的数据类型,若本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.基于静态和动态执行的二阶SQL注入防御和检测方法,其特征在于:包括静态分析模块和动态执行模块,所述静态分析模块对SQL语句添加标识符;所述动态执行模块是基于代理的作用于web应用执行过程中,用于解析静态分析模块添加的标识符,识别出SQL语句中包含的攻击字符,并使用字符转义或字符截取的手段对其进行防御。2.根据权利要求1所述的基于静态和动态执行的二阶SQL注入防御和检测方法,其特征在于:所述静态分析模块操作步骤如下:S1、扫描Web应用源码,根据SQL执行函数定位源代码中的SQL语句并判别其所属的语句类型,然后通过SQL语句第一个保留字映射为其添加类型标识符T;S2、根据SQL语句的条件保留字cond、条件连接保留字conn和逻辑操作符保留字oper划分SQL语句,通过类型标识符T进行提取出所有的与SQL注入相关的变量称为χ;S3、通过正则表达式定位χ中各个变量的填充语句确定其数据源并以ψ作为数据源标识符;S4、利用预设明文θ和私钥pKey生成cond、conn和oper的标识符φ,并修改原SQL语句形成句内标记;S5、组合标识符T、ψ和明文θ,形成SQL语句的头标记Ht。3.根据权利要求2所述的基于静态和动态执行的二阶SQL注入防御和检测方法,其特征在于:所述步骤S1中类型标识符T与SQL语句第一个保留字关系如下:4.根据权利要求3所述的基于静态和动态执行的二阶SQL注入防御和检测方法,其特征在于:所述步骤S2中条件保留字cond、条件连接保留字conn和逻辑操作符保留字oper与T的关系如下:关系如下:关系如下:5.根据权利要求4所述的基于静态和动态执行的二阶SQL注入防御和检测方法,其特征在于:所述步骤S3中数据源ψ=0、1或2,其取值满足如下条件:0

常量,是指变量在当前SQL语句中是由固定的字符或者数字构成的;1

用户的输入值,是指变量是通过用户发起的GET...

【专利技术属性】
技术研发人员:张炳蒋明才任家东
申请(专利权)人:燕山大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1