CN105046150B - 防止sql注入的方法及系统 - Google Patents

防止sql注入的方法及系统 Download PDF

Info

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
Application number
CN201510477341.2A
Other languages
English (en)
Other versions
CN105046150A (zh
Inventor
陈丛亮
刘德建
毛新生
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujian TQ Digital Co Ltd
Original Assignee
Fujian TQ Digital Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Fujian TQ Digital Co Ltd filed Critical Fujian TQ Digital Co Ltd
Priority to CN201510477341.2A priority Critical patent/CN105046150B/zh
Publication of CN105046150A publication Critical patent/CN105046150A/zh
Application granted granted Critical
Publication of CN105046150B publication Critical patent/CN105046150B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/554Detecting 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注入的漏洞,目前市面上也存在一些检测注入的方法,但是都需要程序员对网站代码进行修改,对程序员的专业要求较高。并且和程序开发方式有着较大的关系。若无法防止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注入的系统,其特征在于,注入防御模块还包括:
参数值替换单元,用于替换所有所述参数值;
关键字替换单元,用于根据脚本替换规则库,采用正则表达式替换相关关键字;
安全请求生成单元,用于生成安全请求。
CN201510477341.2A 2015-08-06 2015-08-06 防止sql注入的方法及系统 Active CN105046150B (zh)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (5)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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