CN101526947A - 应用正则表达式防sql注入技术 - Google Patents
应用正则表达式防sql注入技术 Download PDFInfo
- Publication number
- CN101526947A CN101526947A CN200910020369A CN200910020369A CN101526947A CN 101526947 A CN101526947 A CN 101526947A CN 200910020369 A CN200910020369 A CN 200910020369A CN 200910020369 A CN200910020369 A CN 200910020369A CN 101526947 A CN101526947 A CN 101526947A
- Authority
- CN
- China
- Prior art keywords
- rule
- regular expression
- sql
- request
- injection technology
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Debugging And Monitoring (AREA)
Abstract
一种应用正则表达式防SQL注入技术,即一种InforGuard对操作网站数据库的SQL语句进行规则验证的机制。首先进行进程初始化,然后进行验证,验证过程采用正则表达式的机制,解决了当前验证机制功能简单和扩展性差的缺点,其扩展性好、具有稳定、高效的验证算法、兼容性强。
Description
技术领域
本发明涉及一种应用正则表达式防SQL注入技术,即一种InforGuard对操作网站数据库的SQL语句进行规则验证的机制。
背景技术
在基于WEB服务器或应用服务器(以下简称为服务器)的网络应用中,需要对部署在服务器上的数据库中进行保护,为了实现这一目的,需要对操作数据库的语句进行验证,以确保操作语句的合法性。
目前,在此领域采用的方案为:关键字查找。
该方法是通过在请求语句中查找是否有定义的非法关键字,通俗的讲就是判断一个字符中是否包含另一个字符串。这种字符串查找的方式对于那些复杂的应用场景是无能为力的,并且其扩展性也有很大的限制;而现在的应用场景又越来越复杂,攻击数据库的规则也越来越多;所以关键字查找这种方式也该功成身退,应该用一种更为强大的机制代替它。
发明内容
本发明的目的就是针对上述的不足,提供了一种能够应用于复杂环境、扩展性好的InforGuard对操作网站数据库的SQL语句进行规则验证的机制。
一种应用正则表达式防SQL注入技术,首先进行进程初始化,然后进行验证,验证过程为:
第一步:获取请求信息,利用过滤器机制,获取请求的信息或应用服务器的响应信息。
第二步:分解请求信息,对获取到的信息,进行分析,取出所有要验证的信息。
第三步:调用排除规则对象验证,利用程序初始化时生成的对象,对要验证的信息进行规则匹配,对于和规则相匹配的请求认为是合法的请求,交于应用服务器继续处理。
第四步:调用包含规则对象验证,利用程序初始化时生成的对象,对要验证的信息进行规则匹配,对于和规则相匹配的请求认为是非法的请求,终止应用服务器继续处理。
上述规则匹配的匹配机制就是正则表达式,正则表达式是一种普通的现有技术。
上述进程初始化是一个通用流程,为:
第一步:读取配置,为了系统的灵活性,将一些参数通过配置来进行手动配置的方式来指定。因为配置信息影响着系统的运行流程,所以是进程启动后首先要执行的动作。
第二步:读取规则库,为了程序的易扩展性与易维护性,将规则信息写入配置文件中,此步操作的目的就是将规则库中的内容读取到内存中去。
第三步:初始化规则对象,为了提高验证效率,程序在初始化时就进行各种规则对象的初始化,从而避免了每次验证时都要初化对象,大大提高了证验的缺陷。
第四步:销毁规则对象,由于规则对象是在堆上分配的,所以在程序退出之前要释放内存。
本发明是正则表达式在SQL中的应用,主要采用了以下技术手段:
1.针对各种攻击手段提取了较为全面的规则库
较为全面规则库,在安装包中以sqlrules.xml文件的方式存在,并且现在以明文的方式展示,使用记事本就可以查看其内容,其中验证规则以正则表达式的方式描述,在程序使用的排除与包含规则就是规则库中定义的规则。故针对黑客的SQL语句注入、脚本注入、命令注入等方式进行分析,进而行成了比较全面的规则库,可以阻断80%的注入攻击,从而为数据库提供一道安全屏障。
2.规则库采用XML方式描述
也是存在于sqlrules.xml档中,其中文档的格式是以xml格式定义的,其中解析此格式的库为TinyXml(此库也为开源库,XML解析器),用户也可以自己添加一些自己定义的规则,在程序中解决规则到对象时采用的就是XML解决器。规则库采用XML的方式描述,从而提高了规则的可扩展性,也有利于规则的升级与功能的扩展。
3.高效的匹配算法
高效的匹配算法,在系统中以PcreRex动态库出现,其中PcreRex是以Pcre为基础,改造而来,继承了Pcre高效的算法。在程中的匹配调用就是使用的些算法。正则表达式符合Pcre标准,Pcre是开源的项目,Pcre兼容性和通用性很好,并在在Apache服务器上就有应用。
这样,就具有了如下优点:
1.规则扩展性好
有很大一部分功能,就可以利用正则表达式的特点进行扩展,从而避免了修改代码带来的风险;方便规则库的升级,随着时间推移,规则库会越来越完整,越来越精确。
2.稳定、高效率的验证算法
规则库在程序初始化时被初始化到内存中,并生成多个匹配对象,所以在以后的配置中,是直接调用配置对象和验证的字符串进行匹配;另外配置过程中采用非递归的方式,从而减少函数的调用次数进而提高匹配效率、避免了深层递归带来的栈溢出。
3.兼容性强
由于正则表达式,有其统一的规范,所以适用于各种操系统和各种应用服务器。
附图说明
图1为本发明实施例中进程初始化流程图;
图2是本发明实施例中验证流程图。
具体实施方式
下面将对本发明的实施方式进行详细说明。
一种应用正则表达式防SQL注入技术,首先进行进程初始化,然后进行验证。
初始化流程如图1所示,流程开始于步骤101,进程启动。
然后进入步骤102,读取配置,为了系统的灵活性,将一些参数通过配置来进行手动配置的方式来指定。因为配置信息影响着系统的运行流程,所以是进程启动后首先要执行的动作。
然后再进入步骤103,读取规则库,为了程序的易扩展性与易维护性,将规则信息写入配置文件中,此步操作的目的就是将规则库中的内容读取到内存中去。
然后进入步骤104,初始化规则对象,为了提高验证效率,程序在初始化时就进行各种规则对象的初始化,从而避免了每次验证时都要初化对象,大大提高了证验的缺陷。
然后查看是否退出,如果不退出,则进入步骤1051,CPU空闲;如果退出,则进入步骤1052,销毁规则对象,由于规则对象是在堆上分配的,所以在程序退出之前要释放内存。
销毁规则对象后进入步骤106,进程退出。
验证流程如图2所示,开始于步骤201,获取请求信息,利用过滤器机制,获取请求的信息或应用服务器的响应信息。
然后进入步骤202,分解请求信息,对获取到的信息,进行分析,取出所有要验证的信息。
然后进入步骤203和204,调用排除规则对象验证,利用程序初始化时生成的对象,对要验证的信息进行规则匹配,对于和规则相匹配的请求认为是合法的请求,交于应用服务器继续处理。查看是否排除,如果是,则进入步骤2091,正常响应请求;如果为否,则进入步骤205,查看排除是否全部验证,如果结果为否,则回到步骤203。
如果上述结果为是,则进入步骤206和207,调用包含规则对象验证,利用程序初始化时生成的对象,对要验证的信息进行规则匹配,对于和规则相匹配的请求认为是非法的请求,终止应用服务器继续处理。查看是否包含,如果包含,则进入步骤2092,终止响应请求。
如果上述结果为否,则进入步骤208,查看包含是否全部验证,如果已经全部验证,则进入步骤2081,正常响应请求;如果结果为否,则回到步骤206,继续调用包含规则对象验证。
Claims (2)
1.一种应用正则表达式防SQL注入技术,首先进行进程初始化,然后进行验证,验证过程为:第一步:获取请求信息,第二步:分解请求信息,其特征在于:验证过程还包括:
第三步:调用排除规则对象验证,利用程序初始化时生成的对象,对要验证的信息进行规则匹配,对于和规则相匹配的请求认为是合法的请求,交于应用服务器继续处理;
第四步:调用包含规则对象验证,利用程序初始化时生成的对象,对要验证的信息进行规则匹配,对于和规则相匹配的请求认为是非法的请求,终止应用服务器继续处理。
2.根据权利要求1所述的应用正则表达式防SQL注入技术,其特征在于:上述规则匹配的机制是正则表达式。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200910020369A CN101526947A (zh) | 2009-04-23 | 2009-04-23 | 应用正则表达式防sql注入技术 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200910020369A CN101526947A (zh) | 2009-04-23 | 2009-04-23 | 应用正则表达式防sql注入技术 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101526947A true CN101526947A (zh) | 2009-09-09 |
Family
ID=41094813
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200910020369A Pending CN101526947A (zh) | 2009-04-23 | 2009-04-23 | 应用正则表达式防sql注入技术 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101526947A (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102073640B (zh) * | 2009-11-19 | 2013-12-18 | 阿里巴巴集团控股有限公司 | Sql语句的检测方法、系统及服务器 |
CN103944904A (zh) * | 2014-04-23 | 2014-07-23 | 广东电网公司信息中心 | Apache服务器安全监控方法 |
CN104199673A (zh) * | 2014-09-22 | 2014-12-10 | 联想(北京)有限公司 | 一种信息处理方法及装置 |
CN108521392A (zh) * | 2018-01-25 | 2018-09-11 | 华东师范大学 | 一种双向流量的sql注入攻击检测方法 |
CN108763887A (zh) * | 2018-05-23 | 2018-11-06 | 腾讯科技(深圳)有限公司 | 数据库操作请求验证方法、装置、服务器及存储介质 |
CN110086827A (zh) * | 2019-05-14 | 2019-08-02 | 重庆商勤科技有限公司 | 一种sql注入校验方法、服务器以及系统 |
CN110535973A (zh) * | 2019-09-18 | 2019-12-03 | 北京明朝万达科技股份有限公司 | 一种sql注入威胁的检测方法及装置 |
CN112214372A (zh) * | 2020-09-16 | 2021-01-12 | 广州海颐信息安全技术有限公司 | 一种敏感sql集中控制系统 |
-
2009
- 2009-04-23 CN CN200910020369A patent/CN101526947A/zh active Pending
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102073640B (zh) * | 2009-11-19 | 2013-12-18 | 阿里巴巴集团控股有限公司 | Sql语句的检测方法、系统及服务器 |
CN103944904A (zh) * | 2014-04-23 | 2014-07-23 | 广东电网公司信息中心 | Apache服务器安全监控方法 |
CN104199673A (zh) * | 2014-09-22 | 2014-12-10 | 联想(北京)有限公司 | 一种信息处理方法及装置 |
CN104199673B (zh) * | 2014-09-22 | 2018-01-26 | 联想(北京)有限公司 | 一种信息处理方法及装置 |
CN108521392A (zh) * | 2018-01-25 | 2018-09-11 | 华东师范大学 | 一种双向流量的sql注入攻击检测方法 |
CN108763887A (zh) * | 2018-05-23 | 2018-11-06 | 腾讯科技(深圳)有限公司 | 数据库操作请求验证方法、装置、服务器及存储介质 |
CN110086827A (zh) * | 2019-05-14 | 2019-08-02 | 重庆商勤科技有限公司 | 一种sql注入校验方法、服务器以及系统 |
CN110535973A (zh) * | 2019-09-18 | 2019-12-03 | 北京明朝万达科技股份有限公司 | 一种sql注入威胁的检测方法及装置 |
CN112214372A (zh) * | 2020-09-16 | 2021-01-12 | 广州海颐信息安全技术有限公司 | 一种敏感sql集中控制系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101526947A (zh) | 应用正则表达式防sql注入技术 | |
Xu et al. | A novel machine learning‐based analysis model for smart contract vulnerability | |
US20150143494A1 (en) | Continuous identity authentication method for computer users | |
CN104537302B (zh) | 一种终端的安全启动方法、装置及终端 | |
Zhuo et al. | Long short‐term memory on abstract syntax tree for SQL injection detection | |
CN109857389A (zh) | 模型数据生成方法、装置、计算机设备及存储介质 | |
EP3647979B1 (en) | Device attestation techniques | |
Liu et al. | Fast reliability evaluation method for composite power system based on the improved EDA and double cross linked list | |
Zhao et al. | Stabilization of jump linear systems with mode‐dependent time‐varying delays | |
CN106020923B (zh) | SELinux策略的编译方法及系统 | |
CN111415683A (zh) | 语音识别异常告警方法、装置、计算机设备和存储介质 | |
CN105745625B (zh) | 使用散列来验证程序的完整性的方法 | |
Chen et al. | From adversarial arms race to model-centric evaluation: Motivating a unified automatic robustness evaluation framework | |
CN105653339B (zh) | 应用进程启动方法及应用进程启动装置 | |
Xie et al. | Towards a Statistical Model Checking Method for Safety‐Critical Cyber‐Physical System Verification | |
Jing et al. | Mutation testing of protocol messages based on extended TTCN-3 | |
CN111488287B (zh) | 注入漏洞测试用例的生成方法、装置、介质及电子设备 | |
CN116070191A (zh) | 信息处理方法及其装置、存储介质、程序产品 | |
CN117009319B (zh) | 基于大语言模型的数据库操作方法、系统及存储介质 | |
CN105677400B (zh) | 应用进程启动方法及应用进程启动装置 | |
Phalak et al. | An Iot based smart locker using BLE technology | |
CN109218320A (zh) | 网站链路安全性验证方法、装置、计算机设备及存储介质 | |
CN104182248B (zh) | 业务规则库升级方法及装置 | |
Setiyani et al. | Comparison of the Performance of the SQL Injection Detection Model Using CNN, Logistic Regression, Random Forest, Naive Bayes, and Decision Tree | |
Yang et al. | Real‐Time Extended Interface Automata for Software Testing Cases Generation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Open date: 20090909 |