基于语义分析的智能防sql注入方法

文档序号:8395938阅读:781来源:国知局
基于语义分析的智能防sql注入方法
【技术领域】
[0001]本发明涉及一种防SQL注入方法,尤其涉及一种基于语义分析的智能防SQL注入方法。
【背景技术】
[0002]随着B/S模式应用开发的发展,使的采用这种模式编写应用程序的程序员也越来越多。但是这个行业的入门门槛不高,因而,程序员的水平及经验也参差不齐,相当大一部分的程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患。加之,当前SQL注入的软件也有不少,SQL注入攻击已成为黑客对数据库进行攻击的常用手段之一。
[0003]所谓SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想得知的数据。在这种攻击方式中,攻击者会将一些恶意代码插入到字符串中。然后会通过各种手段将该字符串传递到SQL Server数据库的实例中进行分析和执行。只要这个恶意代码符合SQL语句的规则,则在代码编译与执行的时候,就不会被系统所发现。
[0004]SQL注入是从正常的WWW端口访问,而且表面看起来跟一般的Web页面访问没什么区别,所以目前市面的防火墙都不会对SQL注入发出警报,如果管理员没有查看IIS日志的习惯,可能被入侵很长时间都不会发觉。
[0005]SQL注入式攻击的主要形式有两种。一是直接将代码插入到与SQL命令串联在一起并使得其以执行的用户输入变量。由于其直接与SQL语句捆绑,故也被称为直接注入式攻击法。二是一种间接的攻击方法,它将恶意代码注入要在表中存储或者作为原书据存储的字符串。在存储的字符串中会连接到一个动态的SQL命令中,以执行一些恶意的SQL代码。
[0006]SQL注入攻击危害程度是相当严重的,SQL攻击一般可以直接访问数据库进而甚至能够获得数据库所在的服务器的访问权主要包括:对数据库中数据的非法操作、盗取用户的各中敏感信息、注入木马等等。SQL注入访问是通过正常用户端进行的,一般只能通过程序来控制。
[0007]进一步来看,一般SQL注入通过get和post两种方式提交,因而一些通用的防注入方法中没有对cookie数据进行过滤,给黑客留下可乘之机。Cookie的优势在于管理员和注册用户登陆网站时Cookie会保存登陆信息,下次再登陆时Cookie会自动将这些信息保留在登陆的页面输入文本框中,其作用是为了方便登陆者,但也给黑客采集Cookie的信息埋下了隐患。

【发明内容】

[0008]本发明的目的就是为了解决现有技术中存在的上述问题,提供一种基于语义分析的智能防SQL注入方法
本发明的目的通过以下技术方案来实现:
基于语义分析的智能防SQL注入方法,其特征在于:首先,对来自网页的所有请求进行数据拦截或是数据提取,所述的数据出现为字符串,之后将提取到的数据送入安全中心进行处理并返回结果,若数据有害,则跳转到ShowErr页面,若数据无害,则继续进行正常请求,所述的数据拦截为,通过Global, asax拦截所有的请求,所述的数据提取为,提取querystring、form、cookie中的数据,之后,替换掉其中的转义字符,根据预设判断规则按顺序逐条检查,判断这些数据是否有害。
[0009]上述的基于语义分析的智能防SQL注入方法,其中:根据预设判断规则按顺序逐条检查过程为,首先,通过判断字符串是否为完整的SQL语句;之后,判断字符串是否为部分的SQL语句;接着,判断字符串是否为数字型的SQL语句;最后,判断字符串是否为逻辑短路型的SQL语句。
[0010]进一步地,上述的基于语义分析的智能防SQL注入方法,其中:步骤①,判断字符串中“一”的位置,然后截取“一”之前的字符串,不包括“一”,将方括号“[”和“]”替换为空格;
步骤②,以空格拆分,若拆分的数组长度小于3,则为无害结束,反之则为有害,继续运行;
步骤③,去除多个空格,再次以空格拆分,若拆分的数组长度小于3,则为无害结束,反之则为有害,继续运行,若拆分的数组等于3时,处理误拦截情况;
步骤④,采用TSqllOOParser判断字符串是否为合法的SQL语句。
[0011]更进一步地,上述的基于语义分析的智能防SQL注入方法,其中:所述的判断字符串是否为部分的SQL语句的处理流程为,步骤①,判断输入字符串长度是否小于3,若小于,则为无害结束,反之,则为有害,继续运行;
步骤②,去掉最后的空格,然后判断是否为“’ ”号结尾,既取出第一个“’ ”的位置,然后取出最后一个“’ ”号的位置,若位置相同,则无害结束,反之,则为有害,继续运行;
步骤③,给输入的字符串前面加入内容为,SELECT * FROM USERS WHERE ID=的部分SQL语句,用TSqllOOParser判断字符串是否为合法的SQL语句。
[0012]更进一步地,上述的基于语义分析的智能防SQL注入方法,其中:所述的判断字符串是否为数字型的SQL语句的处理流程为,
步骤①,判断输入字符串长度是否小于5,若是,则为无害结束,反之,则为有害,继续运行;
步骤②,去掉两端空格,以空格拆分,若拆分的数组长度小于3,则为无害结束,反之有害,则继续运行。
[0013]步骤③,判断第一个空格前面的字符串是否可转换成Double类型,若是,则给输入的字符串前面加入部分SQL语句,用TSqllOOParser判断字符串是否为合法的SQL语句,若不是则判断第一个;号前面的字符串是否已转换成Double类型,若是,则给输入的字符串前面加入部分SQL语句,用TSqllOOParser判断字符串是否为合法的SQL语句,若不是,则无害结束。
[0014]更进一步地,上述的基于语义分析的智能防SQL注入方法,其中:所述的判断字符串是否为逻辑短路型的SQL语句的处理流程为,
步骤①,判断字符串中是否有单引号,若有,则继续,若没有,则结束;
步骤②,判断是否只有一个单引号,若不是,则继续,若是,则结束;
步骤③,以第一个单引号为界,把字符串分割成两个部分,剔除第二部分任何单引号,将把第一部分和第二部分合并,构成新的字符串;
步骤④,在新的字符串前面加入部分SQL语句,采用TSqllOOParser判断字符串是否为合法的SQL语句,若是,则为有害,将该条字符串放入有害池当中,处理下一条字符串;若不是,则无害返回,处理下一条字符串,当最后一条字符串处理完成时,检查有害池中的有害字符串条数,返回处理结果。
[0015]更进一步地,上述的基于语义分析的智能防SQL注入方法,其中:所述的判断字符串是否为逻辑短路型的SQL语句的处理流程为,
步骤①,判断字符串中是否有单引号,若有,则继续,若无,则结束;
步骤②,判断是否只有一个单引号,若不是,则继续,若是,则结束;
步骤③,设第一个单引号为界,将字符串分割成两个部分,剔除第二部分任何单引号后,将第一部分和第二部分合并;
步骤④,在合并后的字符串前面加入部分SQL语句,用TSqllOOParser判断字符串是否为合法的SQL语句,如若不是,则无害结束,若是,则将该条字符串放入有害池当中,处理下一条
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1