一种基于C/S架构的SQL注入检测方法及其装置制造方法及图纸

技术编号:26066169 阅读:17 留言:0更新日期:2020-10-28 16:39
本发明专利技术公开了一种基于C/S架构的SQL注入检测方法及其装置,在当今复杂网络环境下,公司的数据时刻面临各种各样的安全问题,其中较为常见的SQL注入,就是我们每天要进行检测并及时处理的安全问题之一。本发明专利技术的主要目的在于提出一种可快速的检查出常规的SQL注入,并采取积极的策略处理相应的SQL注入威胁,旨在提高整个系统的安全性。

【技术实现步骤摘要】
一种基于C/S架构的SQL注入检测方法及其装置
本专利技术涉及信息安全
,具体涉及针对结构化查询语言SQL的攻击检测。
技术介绍
结构化查询语言SQL注入漏洞攻击是目前互联网最为流行最为热门的黑客攻击方法之一。攻击者通过把SQL命令插入到Web表单提交或者页面请求的查询字符串中欺骗服务器执行恶意的SQL命令,从而获取数据库的管理用户权限,通过将数据库用户权限提升至操作系统管理权限,控制服务器才做系统,获取重要信息或者机密文件。随着SQL注入越来越普遍的发生,针对SQL注入攻击的检测方法成为业内研究的热点。传统的SQL注入检测和防范方法有对数据库或者服务器进行用户权限最小化的方式,或者利用验证器使用预定的规则校验用户输入数据。SQL注入检测可以分为静态和动态两种方式,静态分析的重点是验证用户输入类型以便减少SQL注入攻击的机会,但需要重写Web应用程序。例如JDBC-Checker使用Java字符串分析库来验证用户输入类型并防止SQL注入攻击,但如果恶意输入数据中均为正确的类型或语法则无法检测出异常。动态分析是在扫描Web应用程序后进行的分析相应,它可以定位来自SQL注入攻击的漏洞而不需要对Web应用程序进行任何修改操作。例如Paros开源程序,使用了预定的攻击代码扫描并确定HTTP响应是否成功,它不仅可以发现SQL注入攻击以及Web应用程序中的其他漏洞,虽然动态分析方法相对于静态分析而言不需要修改Web应用程序,但是对于发现的漏洞必须由开发人员手动修复,而且对于没有预定义的代码攻击漏洞类型不能有效检测。
技术实现思路
针对现有静态分析和动态分析中存在的问题,本专利技术提出一种基于C/S架构的静态和动态分析相结合的SQL注入检测方法和装置。该SQL注入检测方法具体如下:接收客户端提交的数据;在WebServer端对所述数据执行SQL注入检测,查看WebServer端存储的黑名单,判断用户端网页IP地址否在所述黑名单中;若是,则禁止访问所有请求的URL地址;若否,则基于预设的SQL注入检测算法检测客户端提交的数据,所述预设的SQL注入检测算法为静态分析和动态分析相结合的检测算法;若检测结果为合法,则允许正常访问网站;若检测结果为非法,则禁止访问所有请求的URL地址,并更新WebServer端的黑名单,将所述IP地址添加至黑名单。进一步地,所述基于预设的SQL注入检测算法检测客户端提交的数据进一步包括:定义函数f,用于删除数据中SQL查询语句的属性值;令FQ为一条SQL查询语句,则FDQ=f(FQ),FDQ为FQ删除在‘=’之后或括号内的字符串值以后的SQL查询语句。进一步地,所述基于预设的SQL注入检测算法检测客户端提交的数据进一步包括:在Web应用程序运行过程中,遍历该Web应用程序中所有固定SQL查询语句,对于每一条固定SQL查询语句FIX_SQLi,有:DYN_SQLi=f(FIX_SQLi),得到对应的动态SQL查询语句DYN_SQLi。依据下述公式计算得到中间结果result:result=FIX_SQLi⊕DYN_SQLi其中⊕是异或操作;判断所述中间结果result是否为零,若result=0,则说明数据正常,否则说明数据存在异常。优选地,所述删除数据中SQL查询语句的属性值进一步包括:定义函数DeletFirst(),用于提取并删除输入SQL查询语句中的第一个字符,并返回该字符;定义两个状态常量IS_START和IS_END,表示SQL查询语句中“‘”符号的开始和结束状态;定义中间状态变量Current_Status,初始化值为IS_END;如果初始SQL查询语句sql不为空,则循环执行下述操作:步骤S1、令临时变量char=DeletFrist(sql);步骤S2、判断char是否为“‘”符号,如果是,则将char添加到待输出变量output中并执行步骤S3,返回步骤S1,否则,执行步骤S4;步骤S3、判断char前一个字符是否为反斜杠“\”,如果是,则令Current_Status=IS_START,返回步骤S1;步骤S4、判断Current_Status是否等于IS_END,如果是,则将char添加到待输出变量output中,返回步骤S1,否则,执行步骤S5;步骤S5、判断char前一个字符是否为反斜杠“\”,如果是,则将char添加到待输出变量output中;结束循环后返回所述变量output,作为删除属性值后的SQL查询语句。附图说明为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1是目前常见的SQL注入攻击流程图;图2是根据本专利技术实施例所述的SQL注入检测流程图。有益效果针对SQL查询语句的语法特点,总结发现在SQL查询语句中的属性值一般由以下形式组成:name=‘abc’(变量=‘字符串值’)或者index=1(变量=数字值)。本申请提出的SQL注入检测方法结合静态分析和动态分析两种方式,在静态分析中删除SQL查询中的属性值,在Web应用运行过程中动态分析每条SQL查询语句,利用异或操作来判断是否存在异常,有效提高了检测结果的准确性和效率。此外,在进行上述静态分析和动态分析结合的SQL查询语句检测步骤之前,首先利用黑名单机制筛查明显恶意网站,并动态更新该黑名单列表,当黑名单机制筛查通过后进一步利用SQL注入检测算法进行检测,不仅减少了不必要的恶意检测步骤,也进一步提高了对SQL注入检测的准确性。具体实施方式下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员所获得的所有其他实施例,都属于本专利技术保护的范围。SQL注入(SQLInjection)漏洞攻击是目前网上最流行最热门的黑客攻击方法之一。攻击者通过把SQL命令插入到Web表单提交或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。为了获取数据库的管理用户权限,然后通过将数据库用户权限提升至操作系统管理权限,控制服务器操作系统,获取重要信息或机密文件。图1给出了目前常见的SQL注入攻击流程。如图2所示,根据本专利技术实施例所述的一种基于C/S架构的SQL注入检测装置,包括接收模块、检测模块。接收模块,用于接收客户端提交的数据;检测模块,位于WebServer端,用于在WebServer端对所述数据执行SQL注入检测;所述检测模块包括黑名单判断模块和SQL注入检测算法模块;其中黑名单判断模块用于查看WebServer端存储的黑名单,判断用户端网页IP地址否在所述黑名单中,若是,则禁止访问所本文档来自技高网
...

【技术保护点】
1.一种基于C/S架构的SQL注入检测方法,其特征在于:/n接收客户端提交的数据;/n在WebServer端对所述数据执行SQL注入检测,查看WebServer端存储的黑名单,判断用户端网页IP地址否在所述黑名单中;/n若是,则禁止访问所有请求的URL地址;/n若否,则基于预设的SQL注入检测算法检测客户端提交的数据,所述预设的SQL注入检测算法为静态分析和动态分析相结合的检测算法;/n若检测结果为合法,则允许正常访问网站;/n若检测结果为非法,则禁止访问所有请求的URL地址,并更新WebServer端的黑名单,将所述IP地址添加至黑名单。/n

【技术特征摘要】
1.一种基于C/S架构的SQL注入检测方法,其特征在于:
接收客户端提交的数据;
在WebServer端对所述数据执行SQL注入检测,查看WebServer端存储的黑名单,判断用户端网页IP地址否在所述黑名单中;
若是,则禁止访问所有请求的URL地址;
若否,则基于预设的SQL注入检测算法检测客户端提交的数据,所述预设的SQL注入检测算法为静态分析和动态分析相结合的检测算法;
若检测结果为合法,则允许正常访问网站;
若检测结果为非法,则禁止访问所有请求的URL地址,并更新WebServer端的黑名单,将所述IP地址添加至黑名单。


2.根据权利要求1所述的SQL注入检测方法,其特征在于,所述基于预设的SQL注入检测算法检测客户端提交的数据进一步包括:定义函数f,用于删除数据中SQL查询语句的属性值;令FQ为一条SQL查询语句,则FDQ=f(FQ),FDQ为FQ删除在‘=’之后或括号内的字符串值以后的SQL查询语句。


3.根据权利要求2所述的SQL注入检测方法,其特征在于,所述基于预设的SQL注入检测算法检测客户端提交的数据进一步包括:在Web应用程序运行过程中,遍历该Web应用程序中所有固定SQL查询语句,对于每一条固定SQL查询语句FIX_SQLi,有:DYN_SQLi=f(FIX_SQLi),得到对应的动态SQL查询语句DYN_SQLi;
依据下述公式计算得到中间结果result:
result=FIX_SQLi⊕DYN_SQLi
其中⊕是异或操作;
判断所述中间结果result是否为零,若result=0,则说明数据正常,否则说明数据存在异常。


4.根据权利要求2所述的SQL注入检测方法,其特征在于,所述删除数据中SQL查询语句的属性值进一步包括:
定义函数DeletFirst(),用于提取并删除输入SQL查询语句中的第一个字符,并返回该字符;
定义两个状态常量IS_START和IS_END,表示SQL查询语句中“‘”符号的开始和结束状态;
定义中间状态变量Current_Status,初始化值为IS_END;
如果初始SQL查询语句sql不为空,则循环执行下述操作:
步骤S1、令临时变量char=DeletFrist(sql);
步骤S2、判断char是否为“‘”符号,如果是,则将char添加到待输出变量output中并执行步骤S3,返回步骤S1,否则,执行步骤S4;
步骤S3、判断char前一个字符是否为反斜杠“\”,如果是,则令Current_Status=IS_START,返回步骤S1;
步骤S4、判断Current_Status是否等于IS_END,如果是,则将char添加到待输出变量output中,返回步骤S1,否则,执行步骤S5;
步骤S5、判断char前一个字符是否为反斜杠“\”,如果是,则将char添加到待输出变量output中;
结束循环后返回所述变量output,作为删除属性值后的SQL查询语句。


5.一种基于C/S架构的SQL注入检测装置,其特征在于:
接收模块,...

【专利技术属性】
技术研发人员:刘佛福李辉林友钦
申请(专利权)人:厦门靠谱云股份有限公司北京靠谱云科技有限公司
类型:发明
国别省市:福建;35

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

1