CN103902606B - 一种数据库的数据处理方法和系统 - Google Patents
一种数据库的数据处理方法和系统 Download PDFInfo
- Publication number
- CN103902606B CN103902606B CN201210583455.1A CN201210583455A CN103902606B CN 103902606 B CN103902606 B CN 103902606B CN 201210583455 A CN201210583455 A CN 201210583455A CN 103902606 B CN103902606 B CN 103902606B
- Authority
- CN
- China
- Prior art keywords
- sql
- instructions
- keywords
- needed
- pretreatment
- 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
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
-
- 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
Abstract
本发明实施例公开了一种数据库的数据处理方法和系统。本实施例采用破坏SQL关键词在SQL语句中的语法含义来对SQL指令进行预处理,然后才根据该预处理后SQL指令所需参数生成SQL指令,并根据SQL指令进行数据库的数据处理,从而使得即便执行了遗漏SQL转义步骤而构造出的SQL指令时,也会因为SQL语法错误而无法执行,避免产生信息泄漏等危害;而对于不包含SQL关键词的SQL指令所需参数,也不受流程的任何影响,即使执行了漏掉SQL转义步骤而构造的SQL指令,也不会因为产生可执行命令而导致信息泄漏或影响到内容展示和用户阅读效果等后果。
Description
技术领域
本发明涉及通信技术领域,具体涉及一种数据库的数据处理方法和系统。背景技术
随着信息技术的发展,数据库的作用也越发显得重要,如何保护数据库中信息的安全,一直是人们所关注的问题。结构化查询语言(SQL,Structured Query Language)注入攻击是黑客对数据库进行攻击的常用手段之一,其中,SQL是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。SQL注入攻击,指的是在输入参数的字符串之中注入SQL指令,使得其能够在设计不良的程序当中被忽略检查,从而使得这些注入的SQL指令能够被数据库服务器误认为是正常的SQL指令而运行,最终致使数据库信息泄漏等严重后果的攻击行为。
针对SQL注入攻击,现有技术主要采用保护方法有:(1)动态拼接SQL语句的时候将参数值进行SQL转义,避免构造出恶意SQL语句;(2)对已经拼接好的SQL语句做语法分析,通过相应算法检测来推测当前SQL语句是否恶意;(3)针对网页(web)请求参数值强行替换单个单引号为连续两个单引号,再直接进行SQL转义。(4)使用存储过程或第三方中间语言。
在对现有技术的研究和实践过程中,本发明的发明人发现,现有的几种保护方法虽然在一定程度上可以避免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关键词匹配,得到匹配后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指令进行数据库的数据处理。
可选的,其中,所述第一处理单元可以包括识别子单元和预处理子单元;
识别子单元,用于对所述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指令,并根据所述SQL指令进行数据库的数据处理,从而使得即便执行了遗漏SQL转义步骤而构造出的SQL指令时,也会因为SQL语法错误而无法执行,避免产生信息泄漏等危害;而对于不包含SQL关键词的SQL指令所需参数,也不受流程的任何影响,即使执行了漏掉SQL转义步骤而构造的SQL指令,也不会因为产生可执行命令而导致信息泄漏或影响到内容展示和用户阅读效果等后果,即,采用该方案可以提高对数据库的保护效果,而且,不会影响到内容展示和用户阅读效果。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的数据库的数据处理方法的流程图;
图2是本发明实施例提供的数据库的数据处理方法的另一流程图;
图3是本发明实施例提供的数据库的数据处理方法的又一流程图;
图4是本发明实施例提供的数据库的数据处理系统的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为了更好地对本发明实施例进行说明,以下将对本发明实施例所涉及的几个概念进行简略说明,如下:
(1)SQL关键词;
SQL关键词,在本发明实施例中简称为关键词,是SQL语法中被保留有特殊含义的词语(不区分大小写),比如可以包括select、from、delete、update、insert、or、and和into等等,此外,各个数据库厂商的具体实现中又扩展定义了自己的SQL关键词,比如数据库mysql5.5版本新增的SQL关键词有:GENERAL、IGNORE_SERVER_IDS、MASTER_HEARTBEAT_PERIOD、MAXVALUE、RESIGNAL、SIGNAL和SLOW等,在此不再赘述。
(2)万国码(Unicode);
万国码是计算机领域的一项业界标准,该规范给每个字符提供了一个唯一的数字,不论是什么平台、不论是什么程序、以及不论是什么语言。
(3)万国码私有使用区;
万国码私有使用区指的是万国码规范中针对未进行万国码编码的特殊字符,比如古文字,或系统私有字符,所预留的编码区域,各系统可使用这个区域中的编码来表示在本系统内的特殊字符,万国码私有使用区中的字符即称为私有万国码字符。
(4)SQL转义;
在SQL语法中,参数值里的单引号需要用两将单个连续单引号来表示,因此将参数值字符串中单个单引号替换成连续两个单引号的做法称为SQL转义。
本发明实施例提供一种数据库的数据处理方法和系统。以下分别进行详细说明。
实施例一、
本发明实施例将从数据库的数据处理系统的角度来进行描述,该数据库的数据处理系统具体可以安装在终端或服务器中。
一种数据库的数据处理方法,包括:接收数据库数据处理请求,根据该数据库数据处理请求获取SQL指令所需参数;对该SQL指令所需参数进行SQL关键词识别和预处理,得到预处理后SQL指令所需参数,其中,该预处理包括破坏SQL关键词在SQL语句中的语法含义的处理;根据预处理后SQL指令所需参数生成SQL指令,并根据该生成的SQL指令进行数据库的数据处理。
如图1所示,具体流程可以如下:
101、接收数据库数据处理请求,根据该数据库数据处理请求获取SQL指令所需参数;
其中,数据库数据处理请求具体可以为网页(WEB)请求或数据库数据查询请求等请求。
102、对步骤101中获取到的SQL指令所需参数进行SQL关键词识别和预处理,得到预处理后SQL指令所需参数,其中,预处理包括破坏SQL关键词在SQL语句中的语法含义的处理,例如,具体可以如下:
对SQL关键词进行SQL关键词尾部拼接私有万国码字符(即Unicode私有使用区字符)的替换处理,得到预处理后SQL指令所需参数;或者,对SQL关键词进行SQL关键词头部拼接私有万国码字符的替换处理,得到预处理后SQL指令所需参数。
即步骤“对步骤101中获取到的SQL指令所需参数进行SQL关键词识别和预处理,得到预处理后SQL指令所需参数”(即步骤102)具体可以如下:
(1)对步骤101中获取到的SQL指令所需参数进行SQL关键词识别;例如,具体可以如下:
对步骤101中获取到的SQL指令所需参数进行SQL关键词匹配,得到匹配后SQL关键词,根据SQL关键词在SQL语句中的语法对匹配后SQL关键词进行检查,得到符合语法的SQL关键词。
可见,此处的SQL关键词识别并不是简单的匹配,而是在匹配之后,还要进行再次检查,从而可以精准找出符合需求的SQL关键词。
(2)对识别出的SQL关键词进行SQL关键词尾部拼接私有万国码字符的替换处理,得到预处理后SQL指令所需参数;或者,对识别出的SQL关键词进行SQL关键词头部拼接私有万国码字符的替换处理,得到预处理后SQL指令所需参数。
例如,若在(1)中已得到符合语法的SQL关键词,则此时具体可以对该符合语法的SQL关键词进行SQL关键词尾部拼接私有万国码字符的替换处理,得到预处理后SQL指令所需参数;或者,也可以对该符合语法的SQL关键词进行头部拼接私有万国码字符的替换处理,得到预处理后SQL指令所需参数。
需说明的是,以上仅仅以在SQL关键词的尾部或头部拼接私有万国码字符为例进行说明,应当理解的是,还可以采用其他的预处理方式,即只要可以破坏SQL关键词在SQL语句中的语法含义即可。
103、根据预处理后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语法错误而无法执行,避免产生信息泄漏等危害;而对于不包含SQL关键词的SQL指令所需参数,也不受流程的任何影响,即使执行了漏掉SQL转义步骤而构造的SQL指令,也不会因为产生可执行命令而导致信息泄漏或影响到内容展示和用户阅读效果等后果,即,采用该方案可以提高对数据库的保护效果,而且,不会影响到内容展示和用户阅读效果。
根据实施例所描述的方法,以下将在实施例二和三中举例作进一步详细说明。
实施例二、
在本实施例中,将以数据库数据处理请求具体为WEB请求为例进行说明,其中,为了描述方便,在本发明实施例中,将该数据库的数据处理系统简称为数据处理系统。
例如,该数据处理系统的应用场景如下:
该数据处理系统记录用户帐号信息的数据表名为“userinfo”,对应的帐号信息字段名为“username”,密码字段名为“pwd”,用户提交的用户帐号参数名为“username”,密码参数名为“password”,SQL转义方法为StringUtil.encodeSQL,该数据处理系统判断用户登录信息是否合法的拼接SQL指令(以java语言)的代码为:
当然,对于没有相关经验的开发者,代码也可能如下:
则以用户帐号为“ABC”,密码为“1234”为例,最终在数据库执行的SQL指令为:
则如图2所示,一种数据库的数据处理方法,具体流程可以如下:
201、数据处理系统接收WEB请求;
例如,用户打开登录该数据处理系统的WEB页面,然后输入用户帐号和密码,并提交请求进行登录,则此时,数据处理系统将会接收到请求登录的WEB请求。
202、数据处理系统根据该WEB请求获取SQL指令所需参数(即生成SQL指令所需的参数)。
则,如果在步骤201中,用户输入的密码为“ABC”,则获取到的SQL指令所需参数具体可以如下:
203、数据处理系统遍历该获取到的SQL指令所需参数,以进行SQL关键词识别;
例如,具体可以对该获取到的SQL指令所需参数进行SQL关键词匹配,得到匹配后SQL关键词,根据SQL关键词在SQL语句中的语法对匹配后SQL关键词进行检查,得到符合语法(即SQL关键词在SQL语句中的语法)的SQL关键词。
比如,若SQL指令所需参数为:
则此时数据处理系统可以对该SQL指令所需参数进行SQL关键词匹配,
得到SQL关键词“or”,然后再根据SQL关键词“or”在SQL语句中的语法对SQL关键词“or”进行检查,由于此SQL指令中的“or”的语法符合要求,因此,确定“or”为符合语法的SQL关键词。
204、数据处理系统对识别出的SQL关键词进行SQL关键词尾部拼接私有万国码字符的替换处理,得到预处理后SQL指令所需参数,比如该符合语法的SQL关键词进行SQL关键词尾部拼接私有万国码字符的替换处理,得到预处理后SQL指令所需参数。
例如,若SQL指令所需参数为:
则进行SQL关键词尾部拼接私有万国码字符的替换处理后所得到的预处理后SQL指令所需参数为:
需说明的是,由于万国码私有使用区字符的含义和依赖于各系统具体实现,因此在本发明实施例中使用“[U+E000]”来表示私有万国码字符,应当理解的是,此处并不造成限定。
205、数据处理系统根据预处理后SQL指令所需参数生成SQL指令,并运行该生成的SQL指令,以进行数据库的数据处理;例如,具体可以如下:
(1)对该预处理后SQL指令所需参数执行SQL转义和SQL关键词还原,得到还原后的SQL指令所需参数,根据该还原后SQL指令所需参数生成SQL指令,并运行该生成的SQL指令,以进行数据库的数据处理。
则基于前面所述的该数据处理系统的应用场景,最终得到的在数据库执行的SQL语句(即SQL指令)为:
其中,预处理还原指的是删除预处理时所拼接的私有万国码字符。
需说明的是,由于在预处理时,所拼接的是私有万国码字符,而通用的浏览器对该私有万国码字符无法确认展示方式,所以即便不对该预处理后SQL指令所需参数进行预处理还原操作(即删除该私有万国码字符),该私有万国码字符将会被浏览器所忽略,即用户肉眼并看不出来,因此不会影响到内容展示和用户阅读效果。
例如,以用户名为“ABC's or”为例,若未执行预处理还原而直接显示到页面上,则其显示效果为:
“ABC's or[U+E000]”;
但由于通用的浏览器对该[U+E000]字符无法确认展示方式,所以该[U+E000]字符将被忽略,因此,用户实际肉眼看到的结果为:
“ABC's or”;
可见,完全不影响阅读时候的内容理解。
(2)没有对该预处理后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指令,也不会因为产生可执行命令而导致信息泄漏或影响到内容展示和用户阅读效果等后果,即,采用该方案可以提高对数据库的保护效果,而且,不会影响到内容展示和用户阅读效果;进一步的,该方案对系统没有特殊要求,兼容性较好,而且实现简单,成本较低。
实施例三、
与实施例二相同的是,在本实施例中,同样以数据库数据处理请求具体为WEB请求为例进行说明,与实施例二不同的是,在本实施例中,将对另一种预处理方式进行说明(在实施例二中,以对SQL关键词进行尾部拼接私有万国码字符的替换处理为例进行说明,而在本实施例中,将以对SQL关键词进行头部拼接私有万国码字符的替换处理为例进行说明)。
为了描述方便,在本发明实施例中,将该数据库的数据处理系统简称为数据处理系统。
例如,该数据处理系统的应用场景如下:
该数据处理系统记录用户帐号信息的数据表名为“userinfo”,对应的帐号信息字段名为“username”,密码字段名为“pwd”,用户提交的用户帐号参数名为“username”,密码参数名为“password”,SQL转义方法为StringUtil.encodeSQL,该数据处理系统判断用户登录信息是否合法的拼接SQL指令(以java语言)的代码为:
当然,对于没有相关经验的开发者,代码也可能如下:
则以用户帐号为“ABC”,密码为“1234”为例,最终在数据库执行的SQL指令为:
则如图3所示,一种数据库的数据处理方法,具体流程可以如下:
301、数据处理系统接收WEB请求;
例如,用户打开登录该数据处理系统的WEB页面,然后输入用户帐号和密码,并提交请求进行登录,则此时,数据处理系统将会接收到请求登录的WEB请求。
302、数据处理系统根据该WEB请求获取SQL指令所需参数(即生成SQL指令所需的参数)。
则,如果在步骤301中,用户输入的密码为“ABC”,则获取到的SQL指令所需参数具体可以如下:
303、数据处理系统遍历该获取到的SQL指令所需参数,以进行SQL关键词识别;
例如,具体可以对该获取到的SQL指令所需参数进行SQL关键词匹配,得到匹配后SQL关键词,根据SQL关键词在SQL语句中的语法对匹配后SQL关键词进行检查,得到符合语法(即SQL关键词在SQL语句中的语法)的SQL关键词。
比如,若SQL指令所需参数为:
则此时数据处理系统可以对该SQL指令所需参数进行SQL关键词匹配,得到SQL关键词“or”,然后再根据SQL关键词“or”在SQL语句中的语法对SQL关键词“or”进行检查,由于此SQL指令中的“or”的语法符合要求,因此,确定“or”为符合语法的SQL关键词。
304、数据处理系统对识别出的SQL关键词进行SQL关键词头部拼接私有万国码字符的替换处理,得到预处理后SQL指令所需参数,比如对该符合语法的SQL关键词进行SQL关键词头部拼接私有万国码字符的替换处理,得到预处理后SQL指令所需参数。
例如,若SQL指令所需参数为:
则进行SQL关键词头部拼接私有万国码字符的替换处理后所得到的预处理后SQL指令所需参数为:
需说明的是,由于万国码私有使用区字符的含义和依赖于各系统具体实现,因此在本发明实施例中使用“[U+E000]”来表示私有万国码字符,应当理解的是,此处并不造成限定。
305、数据处理系统根据预处理后SQL指令所需参数生成SQL指令,并运行该生成的SQL指令,以进行数据库的数据处理;例如,具体可以如下:
(1)对该预处理后SQL指令所需参数执行SQL转义和SQL关键词还原,得到还原后的SQL指令所需参数,根据该还原后SQL指令所需参数生成SQL指令,并运行该生成的SQL指令,以进行数据库的数据处理。
则基于前面所述的该数据处理系统的应用场景,最终得到的在数据库执行的SQL指令为:
其中,预处理还原指的是删除预处理时所拼接的私有万国码字符。
需说明的是,由于在预处理时,所拼接的是私有万国码字符,而通用的浏览器对该私有万国码字符无法确认展示方式,所以即便不对该预处理后SQL指令所需参数进行预处理还原操作(即删除该私有万国码字符),该私有万国码字符将会被浏览器所忽略,即用户肉眼并看不出来,因此不会影响到内容展示和用户阅读效果。
例如,以用户名为“ABC's or”为例,若未执行预处理还原而直接显示到页面上,则其显示效果为:
“ABC's[U+E000]or”;
但由于通用的浏览器对该[U+E000]字符无法确认展示方式,所以该[U+E000]字符将被忽略,因此,用户实际肉眼看到的结果为:
“ABC's or”;
可见,完全不影响阅读时候的内容理解。
(2)没有对该预处理后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指令,也不会因为产生可执行命令而导致信息泄漏或影响到内容展示和用户阅读效果等后果,即,采用该方案可以提高对数据库的保护效果,而且,不会影响到内容展示和用户阅读效果;进一步的,该方案对系统没有特殊要求,兼容性较好,而且实现简单,成本较低。
实施例四、
为了更好地实施以上方法,本发明实施例还提供一种数据库的数据处理系统(简称数据处理系统),如图4所示,该数据库的数据处理系统包括接收单元401、第一处理单元402和第二处理单元403;
接收单元401,用于接收数据库数据处理请求,根据该数据库数据处理请求获取SQL指令所需参数;
其中,数据库数据处理请求具体可以为网页(WEB)请求或数据库数据查询请求等请求。
第一处理单元402,用于对SQL指令所需参数进行SQL关键词识别和预处理,得到预处理后SQL指令所需参数。
第二处理单元403,用于根据预处理后SQL指令所需参数生成SQL指令,并根据所述SQL指令进行数据库的数据处理。
其中,预处理包括破坏SQL关键词在SQL语句中的语法含义的处理,例如,具体可以如下:
对SQL关键词进行SQL关键词尾部拼接私有万国码字符(即Unicode私有使用区字符)的替换处理,得到预处理后SQL指令所需参数;或者,对SQL关键词进行SQL关键词头部拼接私有万国码字符的替换处理,得到预处理后SQL指令所需参数。即,第一处理单元402可以包括识别子单元和预处理子单元;
识别子单元,用于对所述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指令所需参数为:
其中,第二处理单元403可以直接运行该预处理后SQL指令所需参数以进行数据库的数据处理,也可以对该预处理后SQL指令所需参数执行SQL转义和SQL关键词还原,然后才根据该还原后SQL指令所需参数生成SQL指令,运行该SQL指令以进行数据库的数据处理,即:
第二处理单元403,具体可以用于根据该预处理后SQL指令所需参数生成SQL指令,运行该SQL指令以进行数据库的数据处理。
或者,第二处理单元403,具体可以用于对该预处理后SQL指令所需参数进行SQL转义和预处理还原,得到还原后SQL指令所需参数;根据该还原后SQL指令所需参数生成SQL指令,运行该SQL指令以进行数据库的数据处理。
其中,预处理还原指的是删除预处理时所拼接的私有万国码字符。
需说明的是,由于在预处理时,所拼接的是私有万国码字符,而通用的浏览器对该私有万国码字符无法确认展示方式,所以即便不对该预处理后SQL指令所需参数进行预处理还原操作(即删除该私有万国码字符),该私有万国码字符将会被浏览器所忽略,即用户肉眼并看不出来,因此不会影响到内容展示和用户阅读效果。
例如,以用户账号为“ABC's or”为例,若未执行预处理还原而直接显示到页面上,则其显示效果为:
“ABC's or[U+E000]”;
但由于通用的浏览器对该[U+E000]字符无法确认展示方式,所以该[U+E000]字符将被忽略,因此,用户实际肉眼看到的结果为:
“ABC's or”;
可见,完全不影响阅读时候的内容理解。
其中,该数据库的数据处理系统具体可以安装在终端或服务器中。
具体实施时,以上各个单元可以作为独立的实体实现,也可以进行任意组合,作为同一或若干个实体来实现,以上各个单元的具体实施可参见前面的方法实施例,在此不再赘述。
由上可知,本实施例的数据处理系统采用由第一处理单元402破坏SQL关键词在SQL语句中的语法含义来对SQL指令进行预处理,然后才由第一处理单元403根据该预处理后SQL指令所需参数生成SQL指令,并运行SQL指令以进行数据库的数据处理,从而使得即便执行了遗漏SQL转义步骤而构造出的SQL指令时,也会因为SQL语法错误而无法执行,避免产生信息泄漏等危害;而对于不包含SQL关键词的SQL指令所需参数,也不受流程的任何影响,即使执行了漏掉SQL转义步骤而构造的SQL指令,也不会因为产生可执行命令而导致信息泄漏或影响到内容展示和用户阅读效果等后果,即,采用该方案可以提高对数据库的保护效果,而且,不会影响到内容展示和用户阅读效果;进一步的,该数据处理系统兼容性较好,而且实现简单,成本较低。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取记忆体(RAM,RandomAccess Memory)、磁盘或光盘等。
以上对本发明实施例所提供的一种数据库的数据处理方法和系统进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (8)
1.一种数据库的数据处理方法,其特征在于,包括:
接收数据库数据处理请求,根据所述数据库数据处理请求获取结构化查询语言SQL指令所需参数;
对所述SQL指令所需参数进行SQL关键词识别和预处理,得到预处理后SQL指令所需参数,所述预处理包括破坏SQL关键词在SQL语句中的语法含义的处理;
根据所述预处理后SQL指令所需参数生成SQL指令,并根据所述SQL指令进行数据库的数据处理;
所述根据所述预处理后SQL指令所需参数生成SQL指令,并根据所述SQL指令进行数据库的数据处理,包括:
对所述预处理后SQL指令所需参数进行SQL转义和预处理还原,得到还原后SQL指令所需参数,所述预处理还原为删除预处理时所拼接的私有万国码字符;
根据所述还原后SQL指令所需参数生成SQL指令,并运行生成的SQL指令,以进行数据库的数据处理。
2.根据权利要求1所述的方法,其特征在于,所述对所述SQL指令所需参数进行SQL关键词识别和预处理,得到预处理后SQL指令所需参数,所述预处理包括破坏SQL关键词在SQL语句中的语法含义的处理,包括:
对所述SQL指令所需参数进行SQL关键词识别;
对识别出的SQL关键词进行SQL关键词尾部拼接私有万国码字符的替换处理,得到预处理后SQL指令所需参数;或者,对识别出的SQL关键词进行SQL关键词头部拼接私有万国码字符的替换处理,得到预处理后SQL指令所需参数。
3.根据权利要求2所述的方法,其特征在于,所述对所述SQL指令所需参数进行SQL关键词识别,包括:
对所述SQL指令所需参数进行SQL关键词匹配,得到匹配后SQL关键词;
根据SQL关键词在SQL语句中的语法对匹配后SQL关键词进行检查,得到符合语法的SQL关键词。
4.根据权利要求1至3任一项所述的方法,其特征在于,所述根据所述预处理后SQL指令所需参数生成SQL指令,并根据所述SQL指令进行数据库的数据处理,包括:
根据所述预处理后SQL指令所需参数生成SQL指令,并运行生成的SQL指令,以进行数据库的数据处理。
5.一种数据库的数据处理系统,其特征在于,包括:
接收单元,用于接收数据库数据处理请求,根据所述数据库数据处理请求获取结构化查询语言SQL指令所需参数;
第一处理单元,用于对所述SQL指令所需参数进行SQL关键词识别和预处理,得到预处理后SQL指令所需参数,所述预处理包括破坏SQL关键词在SQL语句中的语法含义的处理;
第二处理单元,用于根据所述预处理后SQL指令所需参数生成SQL指令,并根据所述SQL指令进行数据库的数据处理;
所述第二处理单元具体用于,对所述预处理后SQL指令所需参数进行SQL转义和预处理还原,得到还原后SQL指令所需参数,所述预处理还原为删除预处理时所拼接的私有万国码字符;根据所述还原后SQL指令所需参数生成SQL指令,并运行生成的SQL指令,以进行数据库的数据处理。
6.根据权利要求5所述的数据库的数据处理系统,其特征在于,所述第一处理单元包括识别子单元和预处理子单元;
识别子单元,用于对所述SQL指令所需参数进行SQL关键词识别;
预处理子单元,用于对识别出的SQL关键词进行SQL关键词尾部拼接私有万国码字符的替换处理,得到预处理后SQL指令所需参数;或者,对识别出的SQL关键词进行SQL关键词头部拼接私有万国码字符的替换处理,得到预处理后SQL指令所需参数。
7.根据权利要求6所述的数据库的数据处理系统,其特征在于,
所述识别子单元,具体用于对所述SQL指令所需参数进行SQL关键词匹配,得到匹配后SQL关键词,根据SQL关键词在SQL语句中的语法对匹配后SQL关键词进行检查,得到符合语法的SQL关键词。
8.根据权利要求5至7任一项所述的数据库的数据处理系统,其特征在于,
第二处理单元,具体用于根据所述预处理后SQL指令所需参数生成SQL指令,并运行生成的SQL指令,以进行数据库的数据处理。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210583455.1A CN103902606B (zh) | 2012-12-28 | 2012-12-28 | 一种数据库的数据处理方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210583455.1A CN103902606B (zh) | 2012-12-28 | 2012-12-28 | 一种数据库的数据处理方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103902606A CN103902606A (zh) | 2014-07-02 |
CN103902606B true CN103902606B (zh) | 2018-07-06 |
Family
ID=50993934
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210583455.1A Active CN103902606B (zh) | 2012-12-28 | 2012-12-28 | 一种数据库的数据处理方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103902606B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105046150B (zh) * | 2015-08-06 | 2017-10-17 | 福建天晴数码有限公司 | 防止sql注入的方法及系统 |
CN106777076B (zh) * | 2016-12-13 | 2020-05-05 | 广东金赋科技股份有限公司 | 一种sql限定查询子句生成方法和组合逻辑过滤器 |
CN107885869A (zh) * | 2017-11-24 | 2018-04-06 | 北京农信互联科技有限公司 | 一种修改数据库的方法和系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101267357A (zh) * | 2007-03-13 | 2008-09-17 | 北京启明星辰信息技术有限公司 | 一种sql注入攻击检测方法及系统 |
JP2010039613A (ja) * | 2008-08-01 | 2010-02-18 | Kei Tsuruta | 予約語の変更によるsqlインジェクション対策 |
CN102185930A (zh) * | 2011-06-09 | 2011-09-14 | 北京理工大学 | 一种sql注入漏洞检测方法 |
CN102291394A (zh) * | 2011-07-22 | 2011-12-21 | 网宿科技股份有限公司 | 基于网络加速设备的安全防御系统 |
-
2012
- 2012-12-28 CN CN201210583455.1A patent/CN103902606B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101267357A (zh) * | 2007-03-13 | 2008-09-17 | 北京启明星辰信息技术有限公司 | 一种sql注入攻击检测方法及系统 |
JP2010039613A (ja) * | 2008-08-01 | 2010-02-18 | Kei Tsuruta | 予約語の変更によるsqlインジェクション対策 |
CN102185930A (zh) * | 2011-06-09 | 2011-09-14 | 北京理工大学 | 一种sql注入漏洞检测方法 |
CN102291394A (zh) * | 2011-07-22 | 2011-12-21 | 网宿科技股份有限公司 | 基于网络加速设备的安全防御系统 |
Also Published As
Publication number | Publication date |
---|---|
CN103902606A (zh) | 2014-07-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103744802B (zh) | Sql注入攻击的识别方法及装置 | |
US11343269B2 (en) | Techniques for detecting domain threats | |
US10728250B2 (en) | Managing a whitelist of internet domains | |
CN103026684B (zh) | 用于防御跨站脚本攻击的方法和装置 | |
US20150012564A1 (en) | Secure matching supporting fuzzy data | |
CN106407803B (zh) | Sql注入漏洞的检测方法及装置 | |
WO2019014527A1 (en) | SYSTEM AND METHOD FOR DETECTION OF HOMOGLYPHE ATTACKS USING A SIAMOIS CONVOLUTIVE NEURAL NETWORK | |
US10282466B2 (en) | Machine processing of search query based on grammar rules | |
JP2013506175A (ja) | 統一リソース識別子(uri)による、アプリケーション状態情報の管理 | |
US11468050B2 (en) | Learning user synonyms from sequenced query sessions | |
US20160132509A1 (en) | Complex query handling | |
US20130185330A1 (en) | Rule-driven runtime customization of keyword search engines | |
US10885281B2 (en) | Natural language document summarization using hyperbolic embeddings | |
CN103902606B (zh) | 一种数据库的数据处理方法和系统 | |
CN112580331A (zh) | 政策文本的知识图谱构建方法及系统 | |
Sonowal et al. | Mmsphid: a phoneme based phishing verification model for persons with visual impairments | |
CN105718463A (zh) | 关键字模糊匹配方法及装置 | |
US8245127B2 (en) | Method and apparatus for a document annotation service | |
US20140283080A1 (en) | Identifying stored vulnerabilities in a web service | |
US20170270316A1 (en) | Protecting search privacy using policy-based search terms | |
US11429688B2 (en) | Correcting a URL within a REST API call | |
CN105095513B (zh) | 一种破解Oracle数据库账户密码的方法和装置 | |
US11144636B2 (en) | Systems and methods for identifying unknown attributes of web data fragments when launching a web page in a browser | |
Asha et al. | Preventing sql injection attacks | |
CN113486383B (zh) | 一种前端元素的权限控制方法、装置、存储介质和设备 |
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 | ||
TR01 | Transfer of patent right |
Effective date of registration: 20211018 Address after: 518000 Tencent Building, No. 1 High-tech Zone, Nanshan District, Shenzhen City, Guangdong Province, 35 Floors Patentee after: TENCENT TECHNOLOGY (SHENZHEN) Co.,Ltd. Patentee after: TENCENT CLOUD COMPUTING (BEIJING) Co.,Ltd. Address before: 518031 East 403 room, Sai Ge science and Technology Park, Futian District Zhenxing Road, Shenzhen, Guangdong, China, 2 Patentee before: TENCENT TECHNOLOGY (SHENZHEN) Co.,Ltd. |
|
TR01 | Transfer of patent right |