CN105046150B - 防止sql注入的方法及系统 - Google Patents
防止sql注入的方法及系统 Download PDFInfo
- Publication number
- CN105046150B CN105046150B CN201510477341.2A CN201510477341A CN105046150B CN 105046150 B CN105046150 B CN 105046150B CN 201510477341 A CN201510477341 A CN 201510477341A CN 105046150 B CN105046150 B CN 105046150B
- Authority
- CN
- China
- Prior art keywords
- injection
- request
- module
- url
- sql
- 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/554—Detecting local intrusion or implementing counter-measures involving event detection and direct action
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种防止SQL注入的方法及系统,其中方法包括:配置反向代理模块,并记录所有请求日志;使用注入检测模块对所述请求进行SQL注入检测,记录存在注入漏洞的请求参数;解析所述请求参数,提取对应的参数名称,生成URL摘要集合;获取攻击者对URL的SQL注入请求;反向代理模块发送所述SQL注入请求到注入防御模块;注入防御模块判断所述SQL注入请求的地址是否在所述URL摘要集合中;若是,则注入防御模块替换所述SQL注入请求的地址的参数值及相关关键字,获得安全请求;发送所述安全请求到目标服务器WEB站点上。通过上述方式,本发明能够降低对程序员的要求,提高网站的安全性,无需对源代码进行修改,即可自动对站点进行防御。
Description
技术领域
本发明涉及一种防止SQL注入的方法及系统。
背景技术
目前许多网站有发现存在SQL注入的漏洞,目前市面上也存在一些检测注入的方法,但是都需要程序员对网站代码进行修改,对程序员的专业要求较高。并且和程序开发方式有着较大的关系。若无法防止SQL注入,将导致许多站点被黑客攻击,数据库密码被泄露等问题。
现有专利申请(申请号:201310296901.5)公开了一种针对数据库的SQL注入防御的方法,包括如下步骤:(a)接收来自应用系统发出的访问数据库的SQL语句;(b)对SQL语句进行注入判断和检查,若发现SQL注入,则对该SQL注入进行拦截,记录错误,并向所述应用系统返回异常消息;若发现并非为SQL注入,则查询出该SQL语句所需要访问的相应数据库操作的接口规范,拼接出符合该数据库操作接口规范的SQL语句;(c)将步骤(b)拼接出的规范的SQL语句发送到相应的数据库进行数据库操作;和(d)将查询后的结果返回给应用系统。但是该专利申请对所有SQL语句都要进行判断和检查,处理效率低下。
发明内容
本发明所要解决的技术问题是:仅对需要防御的接口SQL语句进行判断,并对其进行分析、替换处理,处理效率高,且能防止SQL注入到系统中。
为了解决上述技术问题,本发明采用的技术方案为:提供一种防止SQL注入的方法,包括:
配置反向代理模块,并记录所有请求日志;
使用注入检测模块对所述请求进行SQL注入检测,记录存在注入漏洞的请求参数;
解析所述请求参数,提取对应的参数名称,生成URL摘要集合;
获取对URL的SQL注入请求;
反向代理模块发送所述SQL注入请求到注入防御模块;
注入防御模块判断所述SQL注入请求的地址是否在所述URL摘要集合中;
若是,则注入防御模块替换所述SQL注入请求的地址的的参数值及相关关键字,获得安全请求;
发送所述安全请求到目标服务器WEB站点上。
为解决上述问题,本发明还提供一种防止SQL注入的系统,包括注入检测模块、注入防御模块及目标服务器,还包括:
反向代理模块,用于记录所有请求日志;
请求参数记录模块,用于在使用注入检测模块对所述请求进行SQL注入检测后,记录存在注入漏洞的请求参数;
解析提取模块,用于解析所述请求参数,提取对应的参数名称,以生成URL摘要集合;
攻击获取模块,用于获取攻击者对URL的注入请求;
其中,反向代理模块还用于发送所述SQL注入请求到注入防御模块;
注入防御模块用于判断所述SQL注入请求的地址是否在所述URL摘要集合中;
若是,则注入防御模块替换所述URL参数的参数值及相关关键字,获得安全请求;
发送模块,发送所述安全请求到目标服务器WEB站点上。
本发明的有益效果在于:区别于现有技术,通过SQL注入检测,获得存在漏洞的请求参数,生成一个url摘要集合;对获取的相应请求参数进行分析、替换处理,处理效率高,防止SQL注入到系统中。因此本发明可以降低对程序员的要求,提高网站的安全性,无需对源代码进行修改,即可自动对站点进行防御。
附图说明
图1为本发明方法实施例一的流程示意图;
图2为本发明方法实施例二的流程示意图;
图3为本发明系统实施例三的结构框图;
图4为本发明系统实施例四的结构框图。
具体实施方式
为详细说明本发明的技术内容、所实现目的及效果,以下结合实施方式并配合附图予以说明。
本发明最关键的构思在于:通过SQL注入检测,获取需要防御的请求参数,生成URL摘要集合,对获取的SQL注入进行分析、参数值或关键词替换处理,防止SQL注入到系统中。
请参照图1,本发明实施例一提供一种防止SQL注入的方法,包括如下步骤:
S1:配置反向代理模块,并记录所有请求日志;如已知的nginx,使用其中的日志记录功能记录所有请求日志。可选的,反向代理模块也可以是例如windows系统下的IIS;
S2:使用注入检测模块对所述请求进行SQL注入检测,记录存在注入漏洞的请求参数;
S3:解析所述请求参数,提取对应的参数名称,生成URL摘要集合;
S4:获取攻击者对URL的SQL注入请求;
S5:反向代理模块发送所述SQL注入请求到注入防御模块;
S6:注入防御模块判断所述SQL注入请求的地址是否在所述URL摘要集合中;
若是,则执行步骤S7:注入防御模块替换所述SQL注入请求的地址的参数值及相关关键字,获得安全请求;
S8:发送所述安全请求到目标服务器WEB站点上。
应当理解的是,步骤S1中的所有请求日志是一个时间段的所有请求日志,是真实环境中接收到的请求日志。
如图2所示,在实施例一的基础上,本发明实施例二步骤S3具体为:
S31:解析所述请求参数,剔除参数值;
S32:生成仅包含参数名称的URL摘要集合。
其中,步骤S6之后,还包括:
若否,则执行步骤S70:注入防御模块确认所述请求为安全请求;并执行步骤S8。
其中,S7步骤具体为:
S71:替换所有所述参数值;
S72:根据脚本替换规则库,采用正则表达式替换相关关键字;
S73:生成安全请求。
在一个具体的实施例中,可在进行防御前,预先作如下准备:
配置反向代理模块,如已知的nginx,使用其中的日志记录功能。或其他替代品,例如windows系统下的IIS,也可以记录请求日志,在本具体实施例中使用nginx是因为和sqlmap进行配套使用,以记录所有请求日志。
sqlmap是一个自动化的SQL注入工具,其主要功能是扫描,发现并利用给定的URL的SQL注入漏洞,日前支持的数据库是MS-SQL,MYSQL,ORACLE和POSTGRESQL。sqlmap采用四种独特的SQL注入技术,分别是盲推理SQL注入,UNION查询SQL注入,堆查询和基于时间的SQL盲注入。其广泛的功能和选项包括数据库指纹、枚举、数据库提取、访问目标文件系统,并在获取完全操作权限时实行任意命令。sqlmap的功能强大,相比常规注入工具,sqlmap适用范围更广,效果更好。
使用sqlmap工具(即注入检测模块)对记录的日志中的请求进行SQL注入测试,将存在注入的请求参数记录到数据库中。
通过程序对记录下来的存在注入漏洞的请求参数进行解析,将存在注入的参数名称提取出,以生成URL摘要集合。其中参数名称是请求的一部分,并与参数值对应。
例如:请求http://abc.com/?id=1&name=abc中,其参数名称为id和name,对应的参数值为1和abc;优选地,将该请求中的参数值剔除,生成仅包含参数名称的URL摘要集合,即http://abc.com/?id=&name=,URL摘要集合是指所有记录下来的URL摘要的总和。
应当理解的是,剔除参数值后不能保证100%无效SQL注入,但是可以防御绝大多数攻击。
通过上述方式,已经作好防御的准备,接下来阐述防御的过程,具体地:
首先是nginx反向代理模块获取攻击者对URL进行SQL注入请求,并将请求转发到SQL注入防御模块,SQL注入防御模块判断请求地址是否提取出来的摘要集合中。如果存在,则说明此URL存在注入漏洞,需要进行防御,执行后续步骤;否则直接则认为该请求为安全请求,直接转发给目标服务器的web站点。
在进行防御时,SQL注入防御模块对URL中包含的各个参数值进行替换,获取脚本替换规则库,并采用正则表达式替换所有相关关键字,相关关键字包括但不限于:单引号(’),双横杠(--),还有select,from等SQL语句关键字等。替换后即可生成安全请求。
将替换后的安全请求转发到目标的服务器web站点上。从而防御了攻击。
举个例子:在http://abc.com/站点中,在nginx的日志中记录了Gethttp://abc.com/?id=1这个请求。通过sqlmap检测出其参数id存在SQL注入漏洞,如使用请求http://abc.com/?id=1’wait for delay 0:0:1--进行判断,即通过单引号’结束前面参数,执行wait for delay 0:0:1的延时操作,再通过双横杠--将后面语句无效。当使用请求http://abc.com/?id=1’wait for delay 0:0:1--后,若出现1秒的延迟加载,则表明该参数id存在SQL注入漏洞,将此URL和存在注入的参数id记录到数据库中;否则则视为安全请求。
当攻击者使用http://abc.com/?id=1’wait for delay 0:0:1--注入时,自动防御模块匹配数据库中的URL摘要集合中是否存在注入问题,若存在,则调用上述脚本替换规则库,将其参数id中的’和--符号剔除,即变为http://abc.com/?id=1 wait for delay0:0:1,将这个请求转发给目标服务器,这时就自动避免了本次攻击。
综上所述,本发明实施例通过剔除参数值,生成URL摘要集合以作为防御的基础及准备;再判断SQL注入漏洞时,通过脚本替换规则库,并采用正则表达式替换所述URL参数的参数值,以生成安全请求,再发送给目标服务器,实现自动防御的功能。因此本发明实施例二可以降低对程序员的要求,提高网站的安全性,无需对源代码进行修改,即可自动对站点进行防御。
承上,如图3所示,本发明实施例三提供一种防止SQL注入的系统100,包括注入检测模块110、注入防御模块120及目标服务器130,其中还包括:
反向代理模块140,用于记录所有请求日志;
请求参数记录模块150,用于在使用注入检测模块对所述请求进行SQL注入检测后,记录存在注入漏洞的请求参数;
解析提取模块160,用于解析所述请求参数,提取对应的参数名称,以生成URL摘要集合;
攻击获取模块170,用于获取攻击者对URL的SQL注入请求;
其中,反向代理模块140还用于发送所述SQL注入请求到注入防御模块;
注入防御模块120用于判断所述SQL注入请求的地址是否在所述URL摘要集合中;
若是,则注入防御模块120替换所述SQL注入请求的地址的参数值及相关关键字,获得安全请求;
发送模块180,发送所述安全请求到目标服务器WEB站点上。
其中,如图4所示,本发明实施例四中的解析提取模块160还包括:
剔除单元161,用于解析所述请求参数,剔除参数值;
生成单元162,用于生成仅包含参数名称的URL摘要集合。
其中,注入防御模块120判断所述注入请求的地址是否在所述URL摘要集合中的步骤之后,还包括:
若否,则注入防御模块120确认所述请求为安全请求;
并执行步骤“发送所述安全请求到目标服务器WEB站点上”。
其中,注入防御模块120还包括:
参数值替换单元121,用于替换所有所述参数值;
关键字替换单元122,用于根据脚本替换规则库,并采用正则表达式替换相关关键字;
安全请求生成单元123,用于生成安全请求。
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等同变换,或直接或间接运用在相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (6)
1.一种防止SQL注入的方法,其特征在于,包括:
配置反向代理模块,并记录所有请求日志;
使用注入检测模块对所述请求进行SQL注入检测,记录存在注入漏洞的请求参数;
解析所述请求参数,提取对应的参数名称,生成URL摘要集合,所述URL摘要集合是指所有记录下来的URL摘要的总和;
获取对URL的SQL注入请求;
反向代理模块发送所述SQL注入请求到注入防御模块;
注入防御模块判断所述SQL注入请求的地址是否在所述URL摘要集合中;
若是,则注入防御模块替换所述SQL注入请求的地址的参数值及相关关键字,获得安全请求;
发送所述安全请求到目标服务器WEB站点上;
解析所述请求参数,提取对应的参数名称,生成URL摘要集合的步骤具体为:
解析所述请求参数,剔除参数值;
生成仅包含参数名称的URL摘要集合。
2.根据权利要求1所述防止SQL注入的方法,其特征在于,注入防御模块判断所述注入请求的地址是否在所述URL摘要集合中的步骤之后,还包括:
若否,则注入防御模块确认所述请求为安全请求;
并执行步骤“发送所述安全请求到目标服务器WEB站点上”。
3.根据权利要求1所述防止SQL注入的方法,其特征在于,注入防御模块替换所述SQL注入请求的地址的参数值及相关关键字,获得安全请求的步骤具体为:
替换所有所述参数值;
根据脚本替换规则库,采用正则表达式替换相关关键字;
生成安全请求。
4.一种防止SQL注入的系统,其特征在于,包括注入检测模块、注入防御模块及目标服务器,其中还包括:
反向代理模块,用于记录所有请求日志;
请求参数记录模块,用于在使用注入检测模块对所述请求进行SQL注入检测后,记录存在注入漏洞的请求参数;
解析提取模块,用于解析所述请求参数,提取对应的参数名称,以生成URL摘要集合,所述URL摘要集合是指所有记录下来的URL摘要的总和;
攻击获取模块,用于获取对URL的SQL注入请求;
其中,反向代理模块还用于发送所述SQL注入请求到注入防御模块;
注入防御模块用于判断所述SQL注入请求的地址是否在所述URL摘要集合中;
若是,则注入防御模块替换所述SQL注入请求的地址的参数值及相关关键字,获得安全请求;
发送模块,发送所述安全请求到目标服务器WEB站点上;
所述解析提取模块还包括:
剔除单元,用于解析所述请求参数,剔除参数值;
生成单元,用于生成仅包含参数名称的URL摘要集合。
5.根据权利要求4所述防止SQL注入的系统,其特征在于,注入防御模块判断所述注入请求的地址是否在所述URL摘要集合中的步骤,还包括:
若否,则确认所述请求为安全请求。
6.根据权利要求4所述防止SQL注入的系统,其特征在于,注入防御模块还包括:
参数值替换单元,用于替换所有所述参数值;
关键字替换单元,用于根据脚本替换规则库,采用正则表达式替换相关关键字;
安全请求生成单元,用于生成安全请求。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510477341.2A CN105046150B (zh) | 2015-08-06 | 2015-08-06 | 防止sql注入的方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510477341.2A CN105046150B (zh) | 2015-08-06 | 2015-08-06 | 防止sql注入的方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105046150A CN105046150A (zh) | 2015-11-11 |
CN105046150B true CN105046150B (zh) | 2017-10-17 |
Family
ID=54452687
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510477341.2A Active CN105046150B (zh) | 2015-08-06 | 2015-08-06 | 防止sql注入的方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105046150B (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106993000A (zh) * | 2017-05-26 | 2017-07-28 | 山东浪潮商用系统有限公司 | 解决反序列化漏洞的方法、反向代理服务器及系统 |
CN107203718B (zh) * | 2017-06-15 | 2021-05-04 | 深信服科技股份有限公司 | 一种sql命令注入的检测方法及系统 |
CN107566392B (zh) * | 2017-09-22 | 2020-02-11 | 北京知道创宇信息技术股份有限公司 | 一种报错型sql注入的检测方法、代理服务器和存储介质 |
CN109150842B (zh) * | 2018-07-25 | 2021-07-09 | 平安科技(深圳)有限公司 | 一种注入漏洞检测方法及装置 |
CN109344626A (zh) * | 2018-08-08 | 2019-02-15 | 阿里巴巴集团控股有限公司 | 一种业务处理方法及系统、存储介质、计算机设备 |
CN109889475B (zh) * | 2018-12-05 | 2021-08-06 | 苏州蜗牛数字科技股份有限公司 | 一种防止tcp连接被旁路设备嗅探的方法及系统 |
CN110611684A (zh) * | 2019-09-27 | 2019-12-24 | 国网电力科学研究院有限公司 | 一种周期性Web访问行为的检测方法、系统及存储介质 |
CN111079148B (zh) * | 2019-12-24 | 2022-03-18 | 杭州安恒信息技术股份有限公司 | 一种sql注入攻击的检测方法、装置、设备及存储介质 |
CN111767577A (zh) * | 2020-07-07 | 2020-10-13 | 杭州安恒信息技术股份有限公司 | Sql注入风险的检测方法、装置、电子装置和存储介质 |
US11562095B2 (en) | 2021-01-28 | 2023-01-24 | International Business Machines Corporation | Reinforcing SQL transactions dynamically to prevent injection attacks |
CN113961588A (zh) * | 2021-10-27 | 2022-01-21 | 北京科杰科技有限公司 | 一种基于可配置参数的大数据sql程序设计方法 |
CN115185921B (zh) * | 2022-05-17 | 2023-06-16 | 贝壳找房(北京)科技有限公司 | 数据库故障止损方法、装置、电子设备、介质及程序产品 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101267357A (zh) * | 2007-03-13 | 2008-09-17 | 北京启明星辰信息技术有限公司 | 一种sql注入攻击检测方法及系统 |
CN101594266A (zh) * | 2009-07-01 | 2009-12-02 | 杭州华三通信技术有限公司 | 一种结构化查询语言注入攻击检测方法和装置 |
CN102185930A (zh) * | 2011-06-09 | 2011-09-14 | 北京理工大学 | 一种sql注入漏洞检测方法 |
CN103902606A (zh) * | 2012-12-28 | 2014-07-02 | 腾讯科技(深圳)有限公司 | 一种数据库的数据处理方法和系统 |
CN104123497A (zh) * | 2014-07-04 | 2014-10-29 | 北京神州绿盟信息安全科技股份有限公司 | 一种防御sql注入的方法、装置及系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9098722B2 (en) * | 2013-03-15 | 2015-08-04 | Prevoty, Inc. | Systems and methods for parsing user-generated content to prevent attacks |
-
2015
- 2015-08-06 CN CN201510477341.2A patent/CN105046150B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101267357A (zh) * | 2007-03-13 | 2008-09-17 | 北京启明星辰信息技术有限公司 | 一种sql注入攻击检测方法及系统 |
CN101594266A (zh) * | 2009-07-01 | 2009-12-02 | 杭州华三通信技术有限公司 | 一种结构化查询语言注入攻击检测方法和装置 |
CN102185930A (zh) * | 2011-06-09 | 2011-09-14 | 北京理工大学 | 一种sql注入漏洞检测方法 |
CN103902606A (zh) * | 2012-12-28 | 2014-07-02 | 腾讯科技(深圳)有限公司 | 一种数据库的数据处理方法和系统 |
CN104123497A (zh) * | 2014-07-04 | 2014-10-29 | 北京神州绿盟信息安全科技股份有限公司 | 一种防御sql注入的方法、装置及系统 |
Non-Patent Citations (1)
Title |
---|
"一种自动SQL注入攻击检测与利用系统的研究实现";符宇波;《中国优秀硕士学位论文全文数据库 信息科技辑》;20110915(第09期);论文第2-4章 * |
Also Published As
Publication number | Publication date |
---|---|
CN105046150A (zh) | 2015-11-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105046150B (zh) | 防止sql注入的方法及系统 | |
US10057280B2 (en) | Methods and systems of detecting and analyzing correlated operations in a common storage | |
CN103559235B (zh) | 一种在线社交网络恶意网页检测识别方法 | |
CN105491053A (zh) | 一种Web恶意代码检测方法及系统 | |
CN104683328A (zh) | 一种跨站漏洞扫描方法及系统 | |
Rocha et al. | Etssdetector: A tool to automatically detect cross-site scripting vulnerabilities | |
CN105635064B (zh) | Csrf攻击检测方法及装置 | |
CN106650454A (zh) | 一种sql注入攻击检测方法和装置 | |
Atoum et al. | A hybrid technique for SQL injection attacks detection and prevention | |
CN111064735A (zh) | 一种电力信息系统sql注入漏洞检测方法及系统 | |
CN114363002B (zh) | 一种网络攻击关系图的生成方法及装置 | |
Furhad et al. | A hybrid framework for detecting structured query language injection attacks in web-based applications | |
CN103442016B (zh) | 基于网站指纹推送白名单的方法及系统 | |
Shahriar et al. | Early detection of SQL injection attacks | |
CN105072109B (zh) | 防止跨站脚本攻击的方法及系统 | |
Xue et al. | On defense and detection of SQL server injection attack | |
KR102258956B1 (ko) | 관계형 데이터베이스를 관리하기 위한 언어인 SQL(Structured Query Language)이 사용되는 환경에서 공격을 탐지하기 위한 방법 및 이를 사용한 서버 | |
Min et al. | The Detection and Defense Mechanism for SQL Injection Attack Based on Web Application | |
Li et al. | Static-based test case dynamic generation for SQLIVs detection | |
CN108200191A (zh) | 利用微扰法的客户端动态url相关脚本字符串检测系统 | |
Gadgikar | Preventing SQL injection attacks using negative tainting approach | |
Bhagat et al. | Protection of web application against SQL injection attack | |
Howden et al. | Moments in time: A forensic view of twitter | |
Baojiang et al. | Reverse analysis method of static XSS defect detection technique based on database query language | |
Deptula | Automation of cyber penetration testing using the detect, identify, predict, react intelligence automation model |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |