应用正则表达式防SQL注入技术制造技术

技术编号:3781068 阅读:1269 留言:0更新日期:2012-04-11 18:40
一种应用正则表达式防SQL注入技术,即一种InforGuard对操作网站数据库的SQL语句进行规则验证的机制。首先进行进程初始化,然后进行验证,验证过程采用正则表达式的机制,解决了当前验证机制功能简单和扩展性差的缺点,其扩展性好、具有稳定、高效的验证算法、兼容性强。

【技术实现步骤摘要】

本专利技术涉及一种应用正则表达式防SQL注入技术,即一种 InforGuard对操作网站凌之据库的SQL语句进4亍规则-睑证的机制。
技术介绍
在基于WEB服务器或应用服务器(以下简称为服务器)的网络应 用中,需要对部署在服务器上的数据库中进行保护,为了实现这一目 的,需要对操作数据库的语句进行验证,以确保操作语句的合法性。目前,在此领域采用的方案为关键字查找。该方法是通过在请求语句中查找是否有定义的非法关键字,通俗 的讲就是判断一个字符中是否包含另一个字符串。这种字符串查找的 方式对于那些复杂的应用场景是无能为力的,并且其扩展性也有很大 的限制;而现在的应用场景又越来越复杂,攻击数据库的规则也越来 越多;所以关键字查找这种方式也该功成身退,应该用一种更为强大 的机制代替它。
技术实现思路
本专利技术的目的就是针对上述的不足,提供了一种能够应用于复杂 环境、扩展性好的InforGuard对操作网站数据库的SQL语句进行规则 -验-〖正的才几制。一种应用正则表达式防SQL注入技术,首先进行进程初始化,然 后进行验证,验证过程为第一步获取请求信息,利用过滤器机制,获取请求的信息或应 用服务器的响应信息。第二步分解请求信息,对获取到的信息,进行分析,取出所有 要验证的信息。第三步调用排除规则对象验证,利用程序初始化时生成的对象, 对要验证的信息进行规则匹配,对于和规则相匹配的请求认为是合法 的请求,交于应用服务器继续处理。第四步调用包含规则对象验证,利用程序初始化时生成的对象, 对要验证的信息进行规则匹配,对于和规则相匹配的请求认为是非法 的请求,终止应用服务器继续处理。上述规则匹配的匹配机制就是正则表达式,正则表达式是一种普 通的现有技术。上述进程初始化是一个通用流程,为第一步读取配置,为了系统的灵活性,将一些参数通过配置来 进行手动配置的方式来指定。因为配置信息影响着系统的运行流程, 所以是进程启动后首先要执行的动作。第二步读取规则库,为了程序的易扩展性与易维护性,将规则 信息写入配置文件中,此步操作的目的就是将规则库中的内容读取到 内存中去。第三步初始化规则对象,为了提高验证效率,程序在初始化时 就进行各种规则对象的初始化,从而避免了每次验证时都要初化对象, 大大提高了证验的缺陷。第四步销毁规则对象,由于规则对象是在堆上分配的,所以在 程序退出之前要释放内存。本专利技术是正则表达式在SQL中的应用,主要采用了以下技术手段1.针对各种攻击手段提取了较为全面的规则库较为全面规则库,在安装包中以sqlrules. xml文件的方式存在, 并且现在以明文的方式展示,使用记事本就可以查看其内容,其中验 证规则以正则表达式的方式描述,在程序使用的排除与包含规则就是 规则库中定义的规则。故针对黑客的SQL语句注入、脚本注入、命令 注入等方式进行分析,进而行成了比较全面的^见则库,可以阻断80% 的注入攻击,从而为数据库提供一道安全屏障。2j见则库采用XML方式描述也是存在于sqlrules. xml档中,其中文档的格式是以xml格式定 义的,其中解析此4各式的库为TinyXml(此库也为开源库,XML解析器), 用户也可以自己添加一些自己定义的规则,在程序中解决规则到对象 时采用的就是XML解决器。规则库采用XML的方式描述,从而提高了 规则的可扩展性,也有利于规则的升级与功能的扩展。3.高效的匹配算法高效的匹配算法,在系统中以PcreRex动态库出现,其中PcreRex 是以Pcre为基础,改造而来,继承了 Pcre高效的算法。在程中的匹 配调用就是使用的些算法。正则表达式符合Pcre标准,Pcre是开源 的项目,Pcre兼容性和通用性很好,并在在Apache服务器上就有应 用。这样,就具有了如下优点 l.规则扩展性好有很大一部分功能,就可以利用正则表达式的特点进行扩展,从而避免了修改代码带来的风险;方便规则库的升级,随着时间推移, 规则库会越来越完整,越来越精确。2. 稳定、高效率的验证算法规则库在程序初始化时被初始化到内存中,并生成多个匹配对象, 所以在以后的配置中,是直接调用配置对象和验证的字符串进行匹配; 另外配置过程中采用非递归的方式,从而减少函数的调用次数进而提 高匹配效率、避免了深层递归带来的栈溢出。3. 兼容性强由于正则表达式,有其统一的规范,所以适用于各种操系统和各 种应用服务器。 附图说明图1为本专利技术实施例中进程初始化流程图; 图2是本专利技术实施例中验证流程图。 具体实施例方式下面将对本专利技术的实施方式进行详细说明。一种应用正则表达式防SQL注入技术,首先进行进程初始化,然 后进行验证。初始化流程如图l所示,流程开始于步骤101,进程启动。然后进入步骤102,读取配置,为了系统的灵活性,将一些参数 通过配置来进行手动配置的方式来指定。因为配置信息影响着系统的 运行流程,所以是进程启动后首先要执行的动作。然后再进入步骤103,读取规则库,为了程序的易扩展性与易维 护性,将规则信息写入配置文件中,此步操作的目的就是将规则库中 的内容读取到内存中去。然后进入步骤104,初始化规则对象,为了提高验证效率,程序 在初始化时就进行各种规则对象的初始化,/人而避免了每次验证时都 要初化对象,大大提高了证验的缺陷。然后查看是否退出,如果不退出,则进入步骤1051, CPU空闲; 如果退出,则进入步骤1 052,销毁规则对象,由于规则对象是在堆上 分配的,所以在程序退出之前要释放内存。销毁规则对象后进入步骤106,进程退出。验证流程如图2所示,开始于步骤201,获取请求信息,利用过 滤器机制,获取请求的信息或应用服务器的响应信息。然后进入步骤202,分解请求信息,对获取到的信息,进行分析, 取出所有要验证的信息。然后进入步骤203和204,调用排除规则对象验证,利用程序初 始化时生成的对象,对要验证的信息进行规则匹配,对于和规则相匹 配的请求认为是合法的请求,交于应用服务器继续处理。查看是否排 除,如果是,则进入步骤2091,正常响应请求;如果为否,则进入步 骤205,查看排除是否全部验证,如果结果为否,则回到步骤203。如果上述结果为是,则进入步骤206和207,调用包含规则对象 验证,利用程序初始化时生成的对象,对要验证的信息进行规则匹配, 对于和规则相匹配的请求认为是非法的请求,终止应用服务器继续处 理。查看是否包含,如果包含,则进入步骤2092,终止响应请求。如果上述结果为否,则进入步骤208,查看包含是否全部验证, 如果已经全部验证,则进入步骤208 1,正常响应请求;如果结果为否, 则回到步骤2 06 ,继续调用包含规则对象验证。权利要求1.一种应用正则表达式防SQL注入技术,首先进行进程初始化,然后进行验证,验证过程为第一步获取请求信息,第二步分解请求信息,其特征在于验证过程还包括第三步调用排除规则对象验证,利用程序初始化时生成的对象,对要验证的信息进行规则匹配,对于和规则相匹配的请求认为是合法的请求,交于应用服务器继续处理;第四步调用包含规则对象验证,利用程序初始化时生成的对象,对要验证的信息进行规则匹配,对于和规则相匹配的请求认为是非法的请求,终止应用服务器继续处理。2. 根据权利要求1所述的本文档来自技高网...

【技术保护点】
一种应用正则表达式防SQL注入技术,首先进行进程初始化,然后进行验证,验证过程为:第一步:获取请求信息,第二步:分解请求信息,其特征在于:验证过程还包括: 第三步:调用排除规则对象验证,利用程序初始化时生成的对象,对要验证的信息进行规 则匹配,对于和规则相匹配的请求认为是合法的请求,交于应用服务器继续处理; 第四步:调用包含规则对象验证,利用程序初始化时生成的对象,对要验证的信息进行规则匹配,对于和规则相匹配的请求认为是非法的请求,终止应用服务器继续处理。

【技术特征摘要】

【专利技术属性】
技术研发人员:刘江宁黄三伟刘宗福刘春王进石磊刘毅枫
申请(专利权)人:山东中创软件商用中间件股份有限公司
类型:发明
国别省市:88[中国|济南]

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

1