一种基于C/S架构的SQL注入检测方法及其装置与流程

文档序号:22677731发布日期:2020-10-28 12:35阅读:来源:国知局

技术特征:

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注入检测装置,其特征在于:

接收模块,用于接收客户端提交的数据;

检测模块,位于webserver端,用于在webserver端对所述数据执行sql注入检测;

所述检测模块包括黑名单判断模块和sql注入检测算法模块,其中黑名单那判断模块用于查看webserver端存储的黑名单,判断用户端网页ip地址否在所述黑名单中,若是,则禁止访问所有请求的url地址;

若否,则由sql注入检测算法模块基于预设的sql注入检测算法检测客户端提交的数据,所述预设的sql注入检测算法为静态分析和动态分析相结合的检测算法;

若检测结果为合法,则允许正常访问网站;

若检测结果为非法,则禁止访问所有请求的url地址,并更新webserver端的黑名单,将所述ip地址添加至黑名单。

6.根据权利要求5所述的sql注入检测装置,其特征在于,所述基于预设的sql注入检测算法检测客户端提交的数据进一步包括:

定义函数f,用于删除数据中sql查询语句的属性值;令fq为一条sql查询语句,则fdq=f(fq),fdq为fq删除在‘=’之后或括号内的字符串值以后的sql查询语句。

7.根据权利要求6所述的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,则说明数据正常,否则说明数据存在异常。

8.根据权利要求6所述的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查询语句。


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

技术研发人员:刘佛福;李辉;林友钦
受保护的技术使用者:厦门靠谱云股份有限公司;北京靠谱云科技有限公司
技术研发日:2020.07.10
技术公布日:2020.10.27
当前第2页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1