CN107358098A - 基于插件的结构化查询语言sql注入检测方法和装置 - Google Patents
基于插件的结构化查询语言sql注入检测方法和装置 Download PDFInfo
- Publication number
- CN107358098A CN107358098A CN201710574499.0A CN201710574499A CN107358098A CN 107358098 A CN107358098 A CN 107358098A CN 201710574499 A CN201710574499 A CN 201710574499A CN 107358098 A CN107358098 A CN 107358098A
- Authority
- CN
- China
- Prior art keywords
- sql
- morphology
- complete
- database access
- sentences
- 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
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
-
- 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/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/577—Assessing vulnerabilities and evaluating computer system security
-
- 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/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
- G06F21/6227—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database where protection concerns the structure of data, e.g. records, types, queries
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Databases & Information Systems (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了基于插件的结构化查询语言SQL注入检测方法和装置,在全球广域网Web应用服务器上部署SQL拦截插件,Web应用服务器中执行如下SQL注入检测方法包括:接收数据库访问请求;获取数据库访问请求中的请求参数值,判断当前请求参数值中是否存在SQL关键字;若当前请求参数值中存在SQL关键字,从数据库访问请求中,获取的包含SQL关键字的完整SQL语句;提取完整SQL语句的词法,若完整SQL语句的词法与SQL查询原生语句的词法不一致,则采用SQL拦截插件在数据库访问请求中加入SQL拦截探针。本发明能够解决现有的SQL注入检测技术存在的误报和漏报的问题。
Description
技术领域
本发明涉及网络信息安全技术领域,具体涉及基于插件的结构化查询语言SQL注入检测方法和装置。
背景技术
在网络安全技术领域,使用B/S(浏览器/服务器)模式进行应用开发时,若没有对客户端侧用户输入数据的合法性进行检测,则会使得应用程序存在一定的安全隐患,导致应用程序存在结构化查询语言(SQL,Structured Query Language)注入风险。
SQL是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库***,SQL注入防护一直是网络安全的重点。而SQL注入通过把SQL命令***到Web表单中,或把SQL命令输入域名中或把SQL命令***到页面请求的查询字符串中,最终达到欺骗服务器来执行恶意的SQL命令。攻击者通过SQL注入,对应用程序造成攻击,从而获得敏感信息,并且在一些情况下,还有可能导致服务器权限的丢失。因此,对于数据库***来说,防御SQL注入相当重要,而网站管理人员对SQL注入的防御也极其重视。
目前,常见的SQL注入防御技术通常采用网络抓包的方式,也就是说将通过网络中间安全设备抓取到网络数据包,然后分析这个数据包到达服务器后可能会有什么影响。比如访问http://www.aaaa.com/a.html?1=1or 2=2,非常有可能这个a.html仅仅是一个静态页面,没有任何对数据库的操作,而对于这种访问传统的应用防火墙一定是会将其上报为SQL攻击,这就是非常明显的误报。由于对于访问的url进行解码失败、解密失败的情况,漏报也会出现。
因此目前急需一种精确的SQL注入检测方式,避免误报和的出现。
发明内容
本发明的目的在于提供基于插件的结构化查询语言SQL注入检测方法和装置,用以解决现有的SQL注入检测技术存在的误报和漏报的问题。
为实现上述目的,本发明方法包括如下步骤:
基于插件的结构化查询语言SQL注入检测方法,在全球广域网Web应用服务器上部署SQL拦截插件,Web应用服务器中执行如下SQL注入检测方法包括:
接收数据库访问请求。
获取数据库访问请求中的请求参数值,判断当前请求参数值中是否存在SQL关键字。
若当前请求参数值中存在SQL关键字,从数据库访问请求中,获取的包含SQL关键字的完整SQL语句。
提取完整SQL语句的词法,若完整SQL语句的词法与SQL查询原生语句的词法不一致,则采用SQL拦截插件在所述数据库访问请求中加入SQL拦截探针。
进一步地,数据库访问请求包含2个以上的请求参数值。
进一步地,判断当前请求参数值中是否存在SQL关键字,还包括:
若当前请求参数值中不存在SQL关键字,则获取下一个请求参数值。
进一步地,提取完整SQL语句的词法之后,还包括:
若完整SQL语句的词法与SQL查询原生语句的词法一致,则允许数据库访问请求。
进一步地,提取完整SQL语句的词法之前,还包括:
去掉完整SQL语句中的SQL关键字。
本发明还提供了基于插件的结构化查询语言SQL注入检测装置,在全球广域网Web应用服务器上部署SQL拦截插件,同时在所述Web应用服务器上部署SQL注入检测装置。
SQL注入检测装置包括接收模块、第一判断模块、第二判断模块以及拦截模块。
接收模块,用于接收数据库访问请求,将数据库访问请求送入第一判断模块。
第一判断模块,用于获取数据库访问请求中的请求参数值,判断当前请求参数值中是否存在SQL关键字,若当前请求参数值中存在SQL关键字,将数据库访问请求送入到第二判断模块。
第二判断模块,用于从数据库访问请求中,获取包含SQL关键字的完整SQL语句;判断完整SQL语句的词法与SQL查询原生语句的词法是否一致,若完整SQL语句的词法与SQL查询原生语句的词法一致,则将数据库访问请求送入到拦截模块。
拦截模块,用于采用SQL拦截插件在所述数据库访问请求中加入SQL拦截探针。
进一步地,数据库访问请求中包含两个以上请求参数值。
进一步地,第一判断模块,还用于:
判断若当前请求参数值中不存在SQL关键字,则获取下一个请求参数值。
进一步地,第二判断模块,还用于:
判断若完整SQL语句的词法与SQL查询原生语句的词法一致,则允许数据库访问请求。
进一步地,第二判断模块,还用于:
在获取包含SQL关键字的完整SQL语句之后,去掉完整SQL语句中的SQL关键字。
本发明方法具有如下优点:
本发明对数据库访问请求是否造成SQL注入判断时,首先判断请求参数值中是否存在SQL关键字,若存在SQL关键词,再对完整SQL语句的词法进行判断,若词法不符合原生语句,则将该数据库访问请求判断为会造成SQL注入,这种方法一方面通过SQL关键词判断可以避免漏报,另一方面通过对完整SQL语句判断排除有些SQL是本身应用内置或者程序写死的需要执行的,不是由请求参数值带入而引起的SQL查询,避免了误报,因此本发明可以完全解决SQL注入攻击误报和漏报的问题。
附图说明
图1本发明实施例1给出的方法的流程图。
图2本发明实施例2给出的装置的结构组成图。
具体实施方式
以下实施例用于说明本发明,但不用来限制本发明的范围。
实施例1
本发明方法流程如图1所示,在全球广域网Web应用服务器上部署SQL拦截插件,Web应用服务器中执行如下步骤:
基于插件的结构化查询语言SQL注入检测方法,SQL注入检测方法包括:
S1、接收数据库访问请求。
S2、获取数据库访问请求中的请求参数值,判断获取的当前请求参数值中是否存在SQL关键字。
若当前请求参数值中存在SQL关键字,执行S3;
S3、从数据库访问请求中,获取包含SQL关键字的完整SQL语句。
S4、提取完整SQL语句的词法,若完整SQL语句的词法与SQL查询原生语句的词法不一致,执行S5;
S5、采用所述SQL拦截插件在所述数据库访问请求中加入SQL拦截探针,从而实现对具有SQL注入风险的数据库访问请求的拦截。
本发明实施例S2中,判断当前请求参数值中是否存在SQL关键字,若当前请求参数值中不存在SQL关键字,则执行S21;
S21、获取下一个数据库访问请求,返回S2重新判断当前请求参数值中是否存在SQL关键字。
本实施例S4中,提取完整SQL语句的词法之后,若完整SQL语句的词法与SQL查询原生语句的词法一致,则执行S41。
S41、允许数据库访问请求。
本实施例S4中,提取完整SQL语句的词法之前,还包括:
去掉完整SQL语句中的SQL关键字。
本发明方法具有如下优点:
本发明对数据库访问请求是否造成SQL注入判断时,首先判断请求参数值中是否存在SQL关键字,若存在SQL关键词,再对完整SQL语句的词法进行判断,若词法不符合原生语句,则将该数据库访问请求判断为会造成SQL注入,这种方法一方面通过SQL关键词判断可以避免漏报,另一方面通过对完整SQL语句判断排除有些SQL是本身应用内置或者程序写死的需要执行的,不是由请求参数值带入而引起的SQL查询,避免了误报,因此本发明可以完全解决SQL注入攻击误报和漏报的问题。
实施例2
本发明还提供了用于实施上述基于插件的SQL注入检测方法的装置,在全球广域网Web应用服务器上部署SQL拦截插件,同时在所述Web应用服务器上部署SQL注入检测装置。该装置组成框图如图2所示,包括接收模块、第一判断模块、第二判断模块以及拦截模块。
接收模块,用于接收数据库访问请求,将数据库访问请求送入第一判断模块。
第一判断模块,用于获取数据库访问请求中的请求参数值,判断当前请求参数值中是否存在SQL关键字,若当前请求参数值中存在SQL关键字,将数据库访问请求送入到第二判断模块。
第二判断模块,用于从数据库访问请求中,获取包含SQL关键字的完整SQL语句;判断完整SQL语句的词法与SQL查询原生语句的词法是否一致,若完整SQL语句的词法与SQL查询原生语句的词法一致,则将数据库访问请求送入到拦截模块。
拦截模块,用于采用所述SQL拦截插件在所述数据库访问请求中加入SQL拦截探针,从而实现对具有SQL注入风险的数据库访问请求的拦截。
本实施例中,第一判断模块,还用于:
判断若当前请求参数值中不存在SQL关键字,则获取下一个数据库访问请求。
本实施例中,第二判断模块,还用于:
判断若完整SQL语句的词法与SQL查询原生语句的词法一致,则允许数据库访问请求。
本实施例中,第二判断模块,还用于:
在获取包含SQL关键字的完整SQL语句之后,去掉完整SQL语句中的SQL关键字。
虽然,上文中已经用一般性说明及具体实施例对本发明作了详尽的描述,但在本发明基础上,可以对之作一些修改或改进,这对本领域技术人员而言是显而易见的。因此,在不偏离本发明精神的基础上所做的这些修改或改进,均属于本发明要求保护的范围。
Claims (8)
1.基于插件的结构化查询语言SQL注入检测方法,其特征在于,在全球广域网Web应用服务器上部署SQL拦截插件,所述Web应用服务器中执行如下SQL注入检测方法包括:
获取数据库访问请求中的请求参数值,判断当前请求参数值中是否存在SQL关键字;
若所述当前请求参数值中存在所述SQL关键字,从所述数据库访问请求中,获取的包含所述SQL关键字的完整SQL语句;
提取所述完整SQL语句的词法,若所述完整SQL语句的词法与SQL查询原生语句的词法不一致,则采用所述SQL拦截插件在所述数据库访问请求中加入SQL拦截探针。
2.如权利要求1所述SQL注入检测方法,其特征在于,所述判断当前请求参数值中是否存在SQL关键字,还包括:
若所述当前请求参数值中不存在所述SQL关键字,则获取下一个数据库访问请求。
3.如权利要求1或者2所述SQL注入检测方法,其特征在于,所述提取所述完整SQL语句的词法之后,还包括:
若所述完整SQL语句的词法与SQL查询原生语句的词法一致,则允许所述数据库访问请求。
4.如权利要求1或者2所述SQL注入检测方法,其特征在于,所述提取所述完整SQL语句的词法之前,还包括:
去掉所述完整SQL语句中的所述SQL关键字。
5.基于插件的结构化查询语言SQL注入检测装置,其特征在于,在全球广域网Web应用服务器上部署SQL拦截插件,同时在所述Web应用服务器上部署SQL注入检测装置;
所述SQL注入检测装置包括接收模块、第一判断模块、第二判断模块以及拦截模块;
所述接收模块,用于接收数据库访问请求,将所述数据库访问请求送入第一判断模块;
所述第一判断模块,用于获取数据库访问请求中的请求参数值,判断当前请求参数值中是否存在SQL关键字,若当前请求参数值中存在SQL关键字,将所述数据库访问请求送入到所述第二判断模块;
所述第二判断模块,用于从所述数据库访问请求中,获取包含所述SQL关键字的完整SQL语句;判断所述完整SQL语句的词法与SQL查询原生语句的词法是否一致,若所述完整SQL语句的词法与SQL查询原生语句的词法一致,则将所述数据库访问请求送入到所述拦截模块;
所述拦截模块,用于采用所述SQL拦截插件在所述数据库访问请求中加入SQL拦截探针。
6.如权利要求5所述SQL注入检测装置,其特征在于,所述第一判断模块,还用于:
判断若所述当前请求参数值中不存在所述SQL关键字,则获取下一个数据库访问请求。
7.如权利要求5或者6所述SQL注入检测装置,其特征在于,所述第二判断模块,还用于:
判断若所述完整SQL语句的词法与SQL查询原生语句的词法一致,则允许所述数据库访问请求。
8.如权利要求5或者6所述SQL注入检测装置,其特征在于,所述第二判断模块,还用于:
在获取包含所述SQL关键字的完整SQL语句之后,去掉所述完整SQL语句中的所述SQL关键字。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710574499.0A CN107358098A (zh) | 2017-07-14 | 2017-07-14 | 基于插件的结构化查询语言sql注入检测方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710574499.0A CN107358098A (zh) | 2017-07-14 | 2017-07-14 | 基于插件的结构化查询语言sql注入检测方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107358098A true CN107358098A (zh) | 2017-11-17 |
Family
ID=60292647
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710574499.0A Pending CN107358098A (zh) | 2017-07-14 | 2017-07-14 | 基于插件的结构化查询语言sql注入检测方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107358098A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109063013A (zh) * | 2018-07-11 | 2018-12-21 | 北京安数云信息技术有限公司 | 一种数据库行为操作阻断方法和装置 |
CN112527620A (zh) * | 2020-12-24 | 2021-03-19 | 北京百度网讯科技有限公司 | 数据库性能分析方法及装置、电子设备、介质、产品 |
CN112804261A (zh) * | 2021-03-19 | 2021-05-14 | 北京安华金和科技有限公司 | 一种数据转发控制方法、装置、存储介质及电子装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102185930A (zh) * | 2011-06-09 | 2011-09-14 | 北京理工大学 | 一种sql注入漏洞检测方法 |
CN102567546A (zh) * | 2012-01-18 | 2012-07-11 | 北京神州绿盟信息安全科技股份有限公司 | 一种sql注入检测方法及装置 |
CN103338208A (zh) * | 2013-07-16 | 2013-10-02 | 五八同城信息技术有限公司 | 一种sql注入防御的方法和*** |
CN103744802A (zh) * | 2013-12-20 | 2014-04-23 | 北京奇虎科技有限公司 | Sql注入攻击的识别方法及装置 |
CN105160252A (zh) * | 2015-08-10 | 2015-12-16 | 北京神州绿盟信息安全科技股份有限公司 | 一种结构化查询语言注入攻击的检测方法及装置 |
CN106355094A (zh) * | 2016-07-08 | 2017-01-25 | 耿童童 | 一种基于语法变换的sql注入攻击防御***及防御方法 |
-
2017
- 2017-07-14 CN CN201710574499.0A patent/CN107358098A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102185930A (zh) * | 2011-06-09 | 2011-09-14 | 北京理工大学 | 一种sql注入漏洞检测方法 |
CN102567546A (zh) * | 2012-01-18 | 2012-07-11 | 北京神州绿盟信息安全科技股份有限公司 | 一种sql注入检测方法及装置 |
CN103338208A (zh) * | 2013-07-16 | 2013-10-02 | 五八同城信息技术有限公司 | 一种sql注入防御的方法和*** |
CN103744802A (zh) * | 2013-12-20 | 2014-04-23 | 北京奇虎科技有限公司 | Sql注入攻击的识别方法及装置 |
CN105160252A (zh) * | 2015-08-10 | 2015-12-16 | 北京神州绿盟信息安全科技股份有限公司 | 一种结构化查询语言注入攻击的检测方法及装置 |
CN106355094A (zh) * | 2016-07-08 | 2017-01-25 | 耿童童 | 一种基于语法变换的sql注入攻击防御***及防御方法 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109063013A (zh) * | 2018-07-11 | 2018-12-21 | 北京安数云信息技术有限公司 | 一种数据库行为操作阻断方法和装置 |
CN112527620A (zh) * | 2020-12-24 | 2021-03-19 | 北京百度网讯科技有限公司 | 数据库性能分析方法及装置、电子设备、介质、产品 |
CN112804261A (zh) * | 2021-03-19 | 2021-05-14 | 北京安华金和科技有限公司 | 一种数据转发控制方法、装置、存储介质及电子装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104767757B (zh) | 基于web业务的多维度安全监测方法和*** | |
CN103559235B (zh) | 一种在线社交网络恶意网页检测识别方法 | |
CN112217835B (zh) | 报文数据的处理方法、装置、服务器和终端设备 | |
US7917759B2 (en) | Identifying an application user as a source of database activity | |
CN111767573A (zh) | 数据库安全管理方法、装置、电子设备及可读存储介质 | |
CN112929390B (zh) | 一种基于多策略融合的网络智能监控方法 | |
WO2015179286A1 (en) | Polymorphic treatment of data entered at clients | |
Li et al. | Sentinel: securing database from logic flaws in web applications | |
CN103118035B (zh) | 分析网站访问请求参数合法范围的方法及装置 | |
KR100912794B1 (ko) | 실시간 웹 서버 해킹 분석 및 홈페이지 위변조 감시를 위한 웹 위협관리 시스템 및 그 방법 | |
CN107832618A (zh) | 一种基于细粒度权限控制的sql注入检测***及其方法 | |
CN108337269A (zh) | 一种WebShell检测方法 | |
CN107358098A (zh) | 基于插件的结构化查询语言sql注入检测方法和装置 | |
CN105678193A (zh) | 一种防篡改的处理方法和装置 | |
Zhang et al. | An empirical study of web resource manipulation in real-world mobile applications | |
CN103220277B (zh) | 监控跨站脚本攻击的方法、装置及*** | |
CN113961930A (zh) | Sql注入漏洞检测方法、装置及电子设备 | |
CN105404796A (zh) | 一种JavaScript源文件保护的方法及装置 | |
Joshi et al. | Encountering sql injection in web applications | |
CN107222494A (zh) | 一种sql注入攻击防御组件及方法 | |
Mahapatra et al. | A survey of sq1 injection countermeasures | |
KR101161648B1 (ko) | 데이터베이스 서버의 조작이력 생성 시스템 및 방법 | |
CN114969450B (zh) | 一种用户行为分析方法、装置、设备及存储介质 | |
Ruzhi et al. | A database security gateway to the detection of SQL attacks | |
Melshiyan et al. | Information Security Audit Using Open Source Intelligence Methods |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20171117 |