【技术实现步骤摘要】
一种基于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应用程序,但是对于发现的漏洞必须由开发人员手动修复,而且对于没有预定义的代码攻击漏洞类型不能有效检测。 ...
【技术保护点】
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
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。