一种数据库的数据处理方法和系统.pdf

上传人:v**** 文档编号:6135526 上传时间:2019-04-17 格式:PDF 页数:18 大小:6.84MB
返回 下载 相关 举报
摘要
申请专利号:

CN201210583455.1

申请日:

2012.12.28

公开号:

CN103902606A

公开日:

2014.07.02

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||实质审查的生效IPC(主分类):G06F 17/30申请日:20121228|||公开

IPC分类号:

G06F17/30

主分类号:

G06F17/30

申请人:

腾讯科技(深圳)有限公司

发明人:

李宗波

地址:

518031 广东省深圳市福田区振兴路赛格科技园2栋东403室

优先权:

专利代理机构:

深圳市深佳知识产权代理事务所(普通合伙) 44285

代理人:

唐华明

PDF下载: PDF下载
内容摘要

本发明实施例公开了一种数据库的数据处理方法和系统。本实施例采用破坏SQL关键词在SQL语句中的语法含义来对SQL指令进行预处理,然后才根据该预处理后SQL指令所需参数生成SQL指令,并根据SQL指令进行数据库的数据处理,从而使得即便执行了遗漏SQL转义步骤而构造出的SQL指令时,也会因为SQL语法错误而无法执行,避免产生信息泄漏等危害;而对于不包含SQL关键词的SQL指令所需参数,也不受流程的任何影响,即使执行了漏掉SQL转义步骤而构造的SQL指令,也不会因为产生可执行命令而导致信息泄漏或影响到内容展示和用户阅读效果等后果。

权利要求书

权利要求书
1.  一种数据库的数据处理方法,其特征在于,包括:
接收数据库数据处理请求,根据所述数据库数据处理请求获取结构化查询语言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.  根据权利要求1至3任一项所述的方法,其特征在于,所述根据所述预处理后SQL指令所需参数生成SQL指令,并根据所述SQL指令进行数据库的数 据处理,包括:
对所述预处理后SQL指令所需参数进行SQL转义和预处理还原,得到还原后SQL指令所需参数,所述预处理还原为删除预处理时所拼接的私有万国码字符;
根据所述还原后SQL指令所需参数生成SQL指令,并运行生成的SQL指令,以进行数据库的数据处理。

6.  一种数据库的数据处理系统,其特征在于,包括:
接收单元,用于接收数据库数据处理请求,根据所述数据库数据处理请求获取结构化查询语言SQL指令所需参数;
第一处理单元,用于对所述SQL指令所需参数进行SQL关键词识别和预处理,得到预处理后SQL指令所需参数,所述预处理包括破坏SQL关键词在SQL语句中的语法含义的处理;
第二处理单元,用于根据所述预处理后SQL指令所需参数生成SQL指令,并根据所述SQL指令进行数据库的数据处理。

7.  根据权利要求6所述的数据库的数据处理系统,其特征在于,所述第一处理单元包括识别子单元和预处理子单元;
识别子单元,用于对所述SQL指令所需参数进行SQL关键词识别;
预处理子单元,用于对识别出的SQL关键词进行SQL关键词尾部拼接私有万国码字符的替换处理,得到预处理后SQL指令所需参数;或者,对识别出的SQL关键词进行SQL关键词头部拼接私有万国码字符的替换处理,得到预处理后SQL指令所需参数。

8.  根据权利要求7所述的数据库的数据处理系统,其特征在于,
所述识别子单元,具体用于对所述SQL指令所需参数进行SQL关键词匹配,得到匹配后SQL关键词,根据SQL关键词在SQL语句中的语法对匹配后SQL关键词进行检查,得到符合语法的SQL关键词。

9.  根据权利要求6至8任一项所述的数据库的数据处理系统,其特征在于,
第二处理单元,具体用于根据所述预处理后SQL指令所需参数生成SQL指令,并运行生成的SQL指令,以进行数据库的数据处理。

10.  根据权利要求6至8任一项所述的数据库的数据处理系统,其特征在于,
第二处理单元,具体用于对所述预处理后SQL指令所需参数进行SQL转义和预处理还原,得到还原后SQL指令所需参数,所述预处理还原为删除预处理时所拼接的私有万国码字符;根据所述还原后SQL指令所需参数生成SQL指令,并运行生成的SQL指令,以进行数据库的数据处理。

说明书

说明书一种数据库的数据处理方法和系统
技术领域
本发明涉及通信技术领域,具体涉及一种数据库的数据处理方法和系统。背景技术
随着信息技术的发展,数据库的作用也越发显得重要,如何保护数据库中信息的安全,一直是人们所关注的问题。结构化查询语言(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,Random Access Memory)、磁盘或光盘等。
以上对本发明实施例所提供的一种数据库的数据处理方法和系统进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以 上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

一种数据库的数据处理方法和系统.pdf_第1页
第1页 / 共18页
一种数据库的数据处理方法和系统.pdf_第2页
第2页 / 共18页
一种数据库的数据处理方法和系统.pdf_第3页
第3页 / 共18页
点击查看更多>>
资源描述

《一种数据库的数据处理方法和系统.pdf》由会员分享,可在线阅读,更多相关《一种数据库的数据处理方法和系统.pdf(18页珍藏版)》请在专利查询网上搜索。

1、(10)申请公布号 CN 103902606 A (43)申请公布日 2014.07.02 CN 103902606 A (21)申请号 201210583455.1 (22)申请日 2012.12.28 G06F 17/30(2006.01) (71)申请人 腾讯科技 (深圳) 有限公司 地址 518031 广东省深圳市福田区振兴路赛 格科技园 2 栋东 403 室 (72)发明人 李宗波 (74)专利代理机构 深圳市深佳知识产权代理事 务所 ( 普通合伙 ) 44285 代理人 唐华明 (54) 发明名称 一种数据库的数据处理方法和系统 (57) 摘要 本发明实施例公开了一种数据库的数据处。

2、理 方法和系统。 本实施例采用破坏SQL关键词在SQL 语句中的语法含义来对 SQL 指令进行预处理, 然 后才根据该预处理后 SQL 指令所需参数生成 SQL 指令, 并根据 SQL 指令进行数据库的数据处理, 从 而使得即便执行了遗漏 SQL 转义步骤而构造出的 SQL 指令时, 也会因为 SQL 语法错误而无法执行, 避免产生信息泄漏等危害 ; 而对于不包含 SQL 关 键词的 SQL 指令所需参数, 也不受流程的任何影 响, 即使执行了漏掉SQL转义步骤而构造的SQL指 令, 也不会因为产生可执行命令而导致信息泄漏 或影响到内容展示和用户阅读效果等后果。 (51)Int.Cl. 权利要。

3、求书 2 页 说明书 13 页 附图 2 页 (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书2页 说明书13页 附图2页 (10)申请公布号 CN 103902606 A CN 103902606 A 1/2 页 2 1. 一种数据库的数据处理方法, 其特征在于, 包括 : 接收数据库数据处理请求, 根据所述数据库数据处理请求获取结构化查询语言 SQL 指 令所需参数 ; 对所述 SQL 指令所需参数进行 SQL 关键词识别和预处理, 得到预处理后 SQL 指令所需 参数, 所述预处理包括破坏 SQL 关键词在 SQL 语句中的语法含义的处理 ; 根据所述预处理后 SQ。

4、L 指令所需参数生成 SQL 指令, 并根据所述 SQL 指令进行数据库 的数据处理。 2. 根据权利要求 1 所述的方法, 其特征在于, 所述对所述 SQL 指令所需参数进行 SQL 关键词识别和预处理, 得到预处理后SQL指令所需参数, 所述预处理包括破坏SQL关键词在 SQL 语句中的语法含义的处理, 包括 : 对所述 SQL 指令所需参数进行 SQL 关键词识别 ; 对识别出的 SQL 关键词进行 SQL 关键词尾部拼接私有万国码字符的替换处理, 得到预 处理后SQL指令所需参数 ; 或者, 对识别出的SQL关键词进行SQL关键词头部拼接私有万国 码字符的替换处理, 得到预处理后 SQ。

5、L 指令所需参数。 3.根据权利要求2所述的方法, 其特征在于, 所述对所述SQL指令所需参数进行SQL关 键词识别, 包括 : 对所述 SQL 指令所需参数进行 SQL 关键词匹配, 得到匹配后 SQL 关键词 ; 根据 SQL 关键词在 SQL 语句中的语法对匹配后 SQL 关键词进行检查, 得到符合语法的 SQL 关键词。 4.根据权利要求1至3任一项所述的方法, 其特征在于, 所述根据所述预处理后SQL指 令所需参数生成 SQL 指令, 并根据所述 SQL 指令进行数据库的数据处理, 包括 : 根据所述预处理后 SQL 指令所需参数生成 SQL 指令, 并运行生成的 SQL 指令, 以。

6、进行数 据库的数据处理。 5.根据权利要求1至3任一项所述的方法, 其特征在于, 所述根据所述预处理后SQL指 令所需参数生成 SQL 指令, 并根据所述 SQL 指令进行数据库的数据处理, 包括 : 对所述预处理后 SQL 指令所需参数进行 SQL 转义和预处理还原, 得到还原后 SQL 指令 所需参数, 所述预处理还原为删除预处理时所拼接的私有万国码字符 ; 根据所述还原后 SQL 指令所需参数生成 SQL 指令, 并运行生成的 SQL 指令, 以进行数据 库的数据处理。 6. 一种数据库的数据处理系统, 其特征在于, 包括 : 接收单元, 用于接收数据库数据处理请求, 根据所述数据库数据。

7、处理请求获取结构化 查询语言 SQL 指令所需参数 ; 第一处理单元, 用于对所述SQL指令所需参数进行SQL关键词识别和预处理, 得到预处 理后 SQL 指令所需参数, 所述预处理包括破坏 SQL 关键词在 SQL 语句中的语法含义的处理 ; 第二处理单元, 用于根据所述预处理后 SQL 指令所需参数生成 SQL 指令, 并根据所述 SQL 指令进行数据库的数据处理。 7. 根据权利要求 6 所述的数据库的数据处理系统, 其特征在于, 所述第一处理单元包 括识别子单元和预处理子单元 ; 识别子单元, 用于对所述 SQL 指令所需参数进行 SQL 关键词识别 ; 权 利 要 求 书 CN 10。

8、3902606 A 2 2/2 页 3 预处理子单元, 用于对识别出的 SQL 关键词进行 SQL 关键词尾部拼接私有万国码字符 的替换处理, 得到预处理后 SQL 指令所需参数 ; 或者, 对识别出的 SQL 关键词进行 SQL 关键 词头部拼接私有万国码字符的替换处理, 得到预处理后 SQL 指令所需参数。 8. 根据权利要求 7 所述的数据库的数据处理系统, 其特征在于, 所述识别子单元, 具体用于对所述SQL指令所需参数进行SQL关键词匹配, 得到匹配后 SQL 关键词, 根据 SQL 关键词在 SQL 语句中的语法对匹配后 SQL 关键词进行检查, 得到符合 语法的 SQL 关键词。。

9、 9. 根据权利要求 6 至 8 任一项所述的数据库的数据处理系统, 其特征在于, 第二处理单元, 具体用于根据所述预处理后SQL指令所需参数生成SQL指令, 并运行生 成的 SQL 指令, 以进行数据库的数据处理。 10. 根据权利要求 6 至 8 任一项所述的数据库的数据处理系统, 其特征在于, 第二处理单元, 具体用于对所述预处理后 SQL 指令所需参数进行 SQL 转义和预处理还 原, 得到还原后 SQL 指令所需参数, 所述预处理还原为删除预处理时所拼接的私有万国码 字符 ; 根据所述还原后 SQL 指令所需参数生成 SQL 指令, 并运行生成的 SQL 指令, 以进行数 据库的数据。

10、处理。 权 利 要 求 书 CN 103902606 A 3 1/13 页 4 一种数据库的数据处理方法和系统 技术领域 0001 本发明涉及通信技术领域, 具体涉及一种数据库的数据处理方法和系统。背景技 术 0002 随着信息技术的发展, 数据库的作用也越发显得重要, 如何保护数据库中信息的 安全, 一直是人们所关注的问题。结构化查询语言 (SQL, Structured Query Language) 注 入攻击是黑客对数据库进行攻击的常用手段之一, 其中, SQL 是一种数据库查询和程序设计 语言, 用于存取数据以及查询、 更新和管理关系数据库系统。 SQL注入攻击, 指的是在输入参 数。

11、的字符串之中注入 SQL 指令, 使得其能够在设计不良的程序当中被忽略检查, 从而使得 这些注入的 SQL 指令能够被数据库服务器误认为是正常的 SQL 指令而运行, 最终致使数据 库信息泄漏等严重后果的攻击行为。 0003 针对 SQL 注入攻击, 现有技术主要采用保护方法有 :(1) 动态拼接 SQL 语句的时候 将参数值进行 SQL 转义, 避免构造出恶意 SQL 语句 ;(2) 对已经拼接好的 SQL 语句做语法分 析, 通过相应算法检测来推测当前 SQL 语句是否恶意 ;(3) 针对网页 (web) 请求参数值强行 替换单个单引号为连续两个单引号, 再直接进行 SQL 转义。 (4)。

12、 使用存储过程或第三方中间 语言。 0004 在对现有技术的研究和实践过程中, 本发明的发明人发现, 现有的几种保护方法 虽然在一定程度上可以避免 SQL 注入攻击, 但是其保护效果并不是很好, 可能会因为遗漏 SQL 转义步骤而产生可执行命令, 从而导致信息泄漏等后果, 而且可能会影响到内容展示和 用户阅读效果。 发明内容 0005 本发明实施例提供一种数据库的数据处理方法和系统, 可以有效地避免 SQL 注入 攻击, 提高对数据库的保护效果, 而且, 不会影响到内容展示和用户阅读效果。 0006 一种数据库的数据处理方法, 包括 : 0007 接收数据库数据处理请求, 根据所述数据库数据处。

13、理请求获取 SQL 指令所需参 数 ; 0008 对所述 SQL 指令所需参数进行 SQL 关键词识别和预处理, 得到预处理后 SQL 指令 所需参数, 所述预处理包括破坏 SQL 关键词在 SQL 语句中的语法含义的处理 ; 0009 根据所述预处理后 SQL 指令所需参数生成 SQL 指令, 并根据所述 SQL 指令进行数 据库的数据处理。 0010 可选的, 其中, 所述对所述 SQL 指令所需参数进行 SQL 关键词识别和预处理, 得到 预处理后 SQL 指令所需参数, 所述预处理包括破坏 SQL 关键词在 SQL 语句中的语法含义的 处理, 可以包括 : 0011 对所述 SQL 指。

14、令所需参数进行 SQL 关键词识别 ; 对识别出的 SQL 关键词进行 SQL 关键词尾部拼接私有万国码字符的替换处理, 得到预处理后 SQL 指令所需参数 ; 或者, 对识 别出的SQL关键词进行SQL关键词头部拼接私有万国码字符的替换处理, 得到预处理后SQL 说 明 书 CN 103902606 A 4 2/13 页 5 指令所需参数。 0012 可选的, 其中, 所述对所述 SQL 指令所需参数进行 SQL 关键词识别, 可以包括 : 0013 对所述 SQL 指令所需参数进行 SQL 关键词匹配, 得到匹配后 SQL 关键词 ; 根据 SQL 关键词在 SQL 语句中的语法对匹配后 。

15、SQL 关键词进行检查, 得到符合语法的 SQL 关键词。 0014 可选的, 所述根据所述预处理后 SQL 指令所需参数生成 SQL 指令, 并根据所述 SQL 指令进行数据库的数据处理, 可以包括 : 0015 根据所述预处理后 SQL 指令所需参数生成 SQL 指令, 并运行生成的 SQL 指令, 以进 行数据库的数据处理。 0016 或者, 可选的, 所述根据所述预处理后 SQL 指令所需参数生成 SQL 指令, 并根据所 述 SQL 指令进行数据库的数据处理, 可以包括 : 0017 对所述预处理后 SQL 指令所需参数进行 SQL 转义和预处理还原, 得到还原后 SQL 指令所需参。

16、数, 所述预处理还原为删除预处理时所拼接的私有万国码字符 ; 根据所述还原 后 SQL 指令所需参数生成 SQL 指令, 并运行生成的 SQL 指令, 以进行数据库的数据处理。 0018 相应的, 本发明实施例还提供一种数据库的数据处理系统, 在本发明实施例中, 简 称为数据处理系统, 包括接收单元、 第一处理单元和第二处理单元 ; 0019 接收单元, 用于接收数据库数据处理请求, 根据所述数据库数据处理请求生成 SQL 指令所需参数 ; 0020 第一处理单元, 用于对所述SQL指令所需参数进行SQL关键词识别和预处理, 得到 预处理后 SQL 指令所需参数, 所述预处理包括破坏 SQL 。

17、关键词在 SQL 语句中的语法含义的 处理 ; 0021 第二处理单元, 用于根据所述预处理后SQL指令所需参数生成SQL指令, 并根据所 述 SQL 指令进行数据库的数据处理。 0022 可选的, 其中, 所述第一处理单元可以包括识别子单元和预处理子单元 ; 0023 识别子单元, 用于对所述 SQL 指令所需参数进行 SQL 关键词识别 ; 0024 预处理子单元, 用于对识别出的 SQL 关键词进行 SQL 关键词尾部拼接私有万国码 字符的替换处理, 得到预处理后 SQL 指令所需参数 ; 或者, 对识别出的 SQL 关键词进行 SQL 关键词头部拼接私有万国码字符的替换处理, 得到预处。

18、理后 SQL 指令所需参数。 0025 可选的, 其中, 所述识别子单元, 具体可以用于对所述 SQL 指令所需参数进行 SQL 关键词匹配, 得到匹配后 SQL 关键词, 根据 SQL 关键词在 SQL 语句中的语法对匹配后 SQL 关 键词进行检查, 得到符合语法的 SQL 关键词。 0026 可选的, 第二处理单元, 具体用于根据所述预处理后SQL指令所需参数生成SQL指 令, 并运行生成的 SQL 指令, 以进行数据库的数据处理。 0027 或者, 可选的, 第二处理单元, 具体用于对所述预处理后 SQL 指令所需参数进行 SQL 转义和预处理还原, 得到还原后 SQL 指令所需参数,。

19、 所述预处理还原为删除预处理时所 拼接的私有万国码字符 ; 根据所述还原后 SQL 指令所需参数生成 SQL 指令, 并运行生成的 SQL 指令, 以进行数据库的数据处理。 0028 本发明实施例采用破坏 SQL 关键词在 SQL 语句中的语法含义来对 SQL 指令所需参 数进行预处理, 然后才根据该预处理后 SQL 指令所需参数生成 SQL 指令, 并根据所述 SQL 指 令进行数据库的数据处理, 从而使得即便执行了遗漏SQL转义步骤而构造出的SQL指令时, 说 明 书 CN 103902606 A 5 3/13 页 6 也会因为 SQL 语法错误而无法执行, 避免产生信息泄漏等危害 ; 而。

20、对于不包含 SQL 关键词 的 SQL 指令所需参数, 也不受流程的任何影响, 即使执行了漏掉 SQL 转义步骤而构造的 SQL 指令, 也不会因为产生可执行命令而导致信息泄漏或影响到内容展示和用户阅读效果等后 果, 即, 采用该方案可以提高对数据库的保护效果, 而且, 不会影响到内容展示和用户阅读 效果。 附图说明 0029 为了更清楚地说明本发明实施例中的技术方案, 下面将对实施例描述中所需要使 用的附图作简单地介绍, 显而易见地, 下面描述中的附图仅仅是本发明的一些实施例, 对于 本领域技术人员来讲, 在不付出创造性劳动的前提下, 还可以根据这些附图获得其他的附 图。 0030 图 1 。

21、是本发明实施例提供的数据库的数据处理方法的流程图 ; 0031 图 2 是本发明实施例提供的数据库的数据处理方法的另一流程图 ; 0032 图 3 是本发明实施例提供的数据库的数据处理方法的又一流程图 ; 0033 图 4 是本发明实施例提供的数据库的数据处理系统的结构示意图。 具体实施方式 0034 下面将结合本发明实施例中的附图, 对本发明实施例中的技术方案进行清楚、 完 整地描述, 显然, 所描述的实施例仅仅是本发明一部分实施例, 而不是全部的实施例。基于 本发明中的实施例, 本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施 例, 都属于本发明保护的范围。 0035 为了更好。

22、地对本发明实施例进行说明, 以下将对本发明实施例所涉及的几个概念 进行简略说明, 如下 : 0036 (1) SQL 关键词 ; 0037 SQL 关键词, 在本发明实施例中简称为关键词, 是 SQL 语法中被保留有特殊含义 的词语 (不区分大小写) , 比如可以包括 select、 from、 delete、 update、 insert、 or、 and 和 into 等等, 此外, 各个数据库厂商的具体实现中又扩展定义了自己的 SQL 关键词, 比如数据 库 mysql5.5 版本新增的 SQL 关键词有 : GENERAL、 IGNORE_SERVER_IDS、 MASTER_HEAR。

23、TBEAT_ PERIOD、 MAXVALUE、 RESIGNAL、 SIGNAL 和 SLOW 等, 在此不再赘述。 0038 (2) 万国码 (Unicode) ; 0039 万国码是计算机领域的一项业界标准, 该规范给每个字符提供了一个唯一的数 字, 不论是什么平台、 不论是什么程序、 以及不论是什么语言。 0040 (3) 万国码私有使用区 ; 0041 万国码私有使用区指的是万国码规范中针对未进行万国码编码的特殊字符, 比如 古文字, 或系统私有字符, 所预留的编码区域, 各系统可使用这个区域中的编码来表示在本 系统内的特殊字符, 万国码私有使用区中的字符即称为私有万国码字符。 00。

24、42 (4) SQL 转义 ; 0043 在 SQL 语法中, 参数值里的单引号需要用两将单个连续单引号来表示, 因此将参 数值字符串中单个单引号替换成连续两个单引号的做法称为 SQL 转义。 说 明 书 CN 103902606 A 6 4/13 页 7 0044 本发明实施例提供一种数据库的数据处理方法和系统。以下分别进行详细说明。 0045 实施例一、 0046 本发明实施例将从数据库的数据处理系统的角度来进行描述, 该数据库的数据处 理系统具体可以安装在终端或服务器中。 0047 一种数据库的数据处理方法, 包括 : 接收数据库数据处理请求, 根据该数据库数据 处理请求获取SQL指令所。

25、需参数 ; 对该SQL指令所需参数进行SQL关键词识别和预处理, 得 到预处理后 SQL 指令所需参数, 其中, 该预处理包括破坏 SQL 关键词在 SQL 语句中的语法含 义的处理 ; 根据预处理后SQL指令所需参数生成SQL指令, 并根据该生成的SQL指令进行数 据库的数据处理。 0048 如图 1 所示, 具体流程可以如下 : 0049 101、 接收数据库数据处理请求, 根据该数据库数据处理请求获取 SQL 指令所需参 数 ; 0050 其中, 数据库数据处理请求具体可以为网页 (WEB) 请求或数据库数据查询请求等 请求。 0051 102、 对步骤 101 中获取到的 SQL 指令。

26、所需参数进行 SQL 关键词识别和预处理, 得 到预处理后 SQL 指令所需参数, 其中, 预处理包括破坏 SQL 关键词在 SQL 语句中的语法含义 的处理, 例如, 具体可以如下 : 0052 对 SQL 关键词进行 SQL 关键词尾部拼接私有万国码字符 (即 Unicode 私有使用区 字符) 的替换处理, 得到预处理后 SQL 指令所需参数 ; 或者, 对 SQL 关键词进行 SQL 关键词 头部拼接私有万国码字符的替换处理, 得到预处理后 SQL 指令所需参数。 0053 即步骤 “对步骤101中获取到的SQL指令所需参数进行SQL关键词识别和预处理, 得到预处理后 SQL 指令所需。

27、参数” (即步骤 102) 具体可以如下 : 0054 (1) 对步骤 101 中获取到的 SQL 指令所需参数进行 SQL 关键词识别 ; 例如, 具体可 以如下 : 0055 对步骤 101 中获取到的 SQL 指令所需参数进行 SQL 关键词匹配, 得到匹配后 SQL 关键词, 根据 SQL 关键词在 SQL 语句中的语法对匹配后 SQL 关键词进行检查, 得到符合语法 的 SQL 关键词。 0056 可见, 此处的 SQL 关键词识别并不是简单的匹配, 而是在匹配之后, 还要进行再次 检查, 从而可以精准找出符合需求的 SQL 关键词。 0057 (2) 对识别出的SQL关键词进行SQ。

28、L关键词尾部拼接私有万国码字符的替换处理, 得到预处理后SQL指令所需参数 ; 或者, 对识别出的SQL关键词进行SQL关键词头部拼接私 有万国码字符的替换处理, 得到预处理后 SQL 指令所需参数。 0058 例如, 若在 (1) 中已得到符合语法的 SQL 关键词, 则此时具体可以对该符合语法的 SQL关键词进行SQL关键词尾部拼接私有万国码字符的替换处理, 得到预处理后SQL指令所 需参数 ; 或者, 也可以对该符合语法的 SQL 关键词进行头部拼接私有万国码字符的替换处 理, 得到预处理后 SQL 指令所需参数。 0059 需说明的是, 以上仅仅以在 SQL 关键词的尾部或头部拼接私有。

29、万国码字符为例进 行说明, 应当理解的是, 还可以采用其他的预处理方式, 即只要可以破坏 SQL 关键词在 SQL 语句中的语法含义即可。 说 明 书 CN 103902606 A 7 5/13 页 8 0060 103、 根据预处理后 SQL 指令所需参数生成 SQL 指令, 并根据所述 SQL 指令进行数 据库的数据处理 ; 例如, 具体可以如下 : 0061 根据该预处理后 SQL 指令所需参数生成 SQL 指令, 并运行生成的 SQL 指令, 以进行 数据库的数据处理。 0062 或者, 也可以对预处理后SQL指令所需参数进行SQL转义和预处理还原, 然后才根 据还原后 SQL 指令所。

30、需参数生成 SQL 指令, 并运行生成的 SQL 指令, 即步骤 “根据预处理后 SQL 指令所需参数生成 SQL 指令, 并根据所述 SQL 指令进行数据库的数据处理” 具体也可以 如下 : 0063 对预处理后 SQL 指令所需参数进行 SQL 转义和预处理还原, 得到还原后 SQL 指令 所需参数, 然后根据该还原后 SQL 指令所需参数生成 SQL 指令, 并运行生成的 SQL 指令, 以 进行数据库的数据处理。 0064 其中, 预处理还原为 : 删除预处理时所拼接的私有万国码字符。 0065 需说明的是, 由于在预处理时, 所拼接的是私有万国码字符, 而通用的浏览器对该 私有万国码。

31、字符无法确认展示方式, 所以该私有万国码字符将会被浏览器所忽略, 即用户 肉眼并看不出来, 因此不会影响到内容展示和用户阅读效果。 0066 由上可知, 本实施例采用破坏 SQL 关键词在 SQL 语句中的语法含义来对 SQL 指令 所需参数进行预处理, 然后才根据该预处理后 SQL 指令所需参数生成 SQL 指令, 并运行该 SQL指令以进行数据库的数据处理, 从而使得即便执行了遗漏SQL转义步骤而构造出的SQL 指令时, 也会因为 SQL 语法错误而无法执行, 避免产生信息泄漏等危害 ; 而对于不包含 SQL 关键词的SQL指令所需参数, 也不受流程的任何影响, 即使执行了漏掉SQL转义步。

32、骤而构造 的 SQL 指令, 也不会因为产生可执行命令而导致信息泄漏或影响到内容展示和用户阅读效 果等后果, 即, 采用该方案可以提高对数据库的保护效果, 而且, 不会影响到内容展示和用 户阅读效果。 0067 根据实施例所描述的方法, 以下将在实施例二和三中举例作进一步详细说明。 0068 实施例二、 0069 在本实施例中, 将以数据库数据处理请求具体为 WEB 请求为例进行说明, 其中, 为 了描述方便, 在本发明实施例中, 将该数据库的数据处理系统简称为数据处理系统。 0070 例如, 该数据处理系统的应用场景如下 : 0071 该数据处理系统记录用户帐号信息的数据表名为 “useri。

33、nfo” , 对应的帐号信息字 段名为 “username” , 密码字段名为 “pwd” , 用户提交的用户帐号参数名为 “username” , 密码 参数名为 “password” , SQL 转义方法为 StringUtil.encodeSQL, 该数据处理系统判断用户 登录信息是否合法的拼接 SQL 指令 (以 java 语言) 的代码为 : 0072 说 明 书 CN 103902606 A 8 6/13 页 9 0073 当然, 对于没有相关经验的开发者, 代码也可能如下 : 0074 0075 则以用户帐号为 “ABC” , 密码为 “1234” 为例, 最终在数据库执行的 S。

34、QL 指令为 : 0076 0077 则如图 2 所示, 一种数据库的数据处理方法, 具体流程可以如下 : 0078 201、 数据处理系统接收 WEB 请求 ; 0079 例如, 用户打开登录该数据处理系统的 WEB 页面, 然后输入用户帐号和密码, 并提 交请求进行登录, 则此时, 数据处理系统将会接收到请求登录的 WEB 请求。 0080 202、 数据处理系统根据该 WEB 请求获取 SQL 指令所需参数 (即生成 SQL 指令所需 的参数) 。 0081 则, 如果在步骤201中, 用户输入的密码为 “ABC” , 则获取到的SQL指令所需参数具 体可以如下 : 0082 0083 。

35、203、 数据处理系统遍历该获取到的 SQL 指令所需参数, 以进行 SQL 关键词识别 ; 0084 例如, 具体可以对该获取到的SQL指令所需参数进行SQL关键词匹配, 得到匹配后 SQL 关键词, 根据 SQL 关键词在 SQL 语句中的语法对匹配后 SQL 关键词进行检查, 得到符合 语法 (即 SQL 关键词在 SQL 语句中的语法) 的 SQL 关键词。 0085 比如, 若 SQL 指令所需参数为 : 0086 0087 则此时数据处理系统可以对该 SQL 指令所需参数进行 SQL 关键词匹配, 0088 得到 SQL 关键词 “or” , 然后再根据 SQL 关键词 “or” 。

36、在 SQL 语句中的语法对 SQL 关 键词 “or” 进行检查, 由于此 SQL 指令中的 “or” 的语法符合要求, 因此, 确定 “or” 为符合语 说 明 书 CN 103902606 A 9 7/13 页 10 法的 SQL 关键词。 0089 204、 数据处理系统对识别出的SQL关键词进行SQL关键词尾部拼接私有万国码字 符的替换处理, 得到预处理后 SQL 指令所需参数, 比如该符合语法的 SQL 关键词进行 SQL 关 键词尾部拼接私有万国码字符的替换处理, 得到预处理后 SQL 指令所需参数。 0090 例如, 若 SQL 指令所需参数为 : 0091 0092 则进行 S。

37、QL 关键词尾部拼接私有万国码字符的替换处理后所得到的预处理后 SQL 指令所需参数为 : 0093 0094 需说明的是, 由于万国码私有使用区字符的含义和依赖于各系统具体实现, 因此 在本发明实施例中使用 “U+E000” 来表示私有万国码字符, 应当理解的是, 此处并不造成 限定。 0095 205、 数据处理系统根据预处理后 SQL 指令所需参数生成 SQL 指令, 并运行该生成 的 SQL 指令, 以进行数据库的数据处理 ; 例如, 具体可以如下 : 0096 (1) 对该预处理后 SQL 指令所需参数执行 SQL 转义和 SQL 关键词还原, 得到还原后 的 SQL 指令所需参数,。

38、 根据该还原后 SQL 指令所需参数生成 SQL 指令, 并运行该生成的 SQL 指令, 以进行数据库的数据处理。 0097 则基于前面所述的该数据处理系统的应用场景, 最终得到的在数据库执行的 SQL 语句 (即 SQL 指令) 为 : 0098 0099 其中, 预处理还原指的是删除预处理时所拼接的私有万国码字符。 0100 需说明的是, 由于在预处理时, 所拼接的是私有万国码字符, 而通用的浏览器对该 私有万国码字符无法确认展示方式, 所以即便不对该预处理后 SQL 指令所需参数进行预处 理还原操作 (即删除该私有万国码字符) , 该私有万国码字符将会被浏览器所忽略, 即用户 肉眼并看不。

39、出来, 因此不会影响到内容展示和用户阅读效果。 0101 例如, 以用户名为 “ABCs or” 为例, 若未执行预处理还原而直接显示到页面上, 则 其显示效果为 : 0102 “ABCs orU+E000” ; 0103 但由于通用的浏览器对该 U+E000 字符无法确认展示方式, 所以该 U+E000 字 符将被忽略, 因此, 用户实际肉眼看到的结果为 : 0104 “ABCs or” ; 0105 可见, 完全不影响阅读时候的内容理解。 说 明 书 CN 103902606 A 10 8/13 页 11 0106 (2) 没有对该预处理后 SQL 指令所需参数执行了 SQL 转义和 SQ。

40、L 关键词还原, 而是 直接运行该预处理后 SQL 指令所需参数以进行数据库的数据处理 ; 0107 则基于前面所述的该数据处理系统的应用场景, 最终得到的在数据库执行的 SQL 语句 (即 SQL 指令) 为 : 0108 0109 可见, 根据没有进行 SQL 转义的 “预处理后 SQL 指令所需参数” 所生成的 SQL 指 令, 由于语法错误而将无法被执行, 也就是说, 经过预处理后的 SQL 指令所需参数无法构造 成为恶意 SQL 指令, 其执行时会得到如下出错提示 : 0110 0111 所以, 该 SQL 注入攻击无效, 可以被成功防范。 0112 由上可知, 本实施例采用对 SQ。

41、L 关键词进行 SQL 关键词尾部拼接私有万国码字符 的替换处理来对 SQL 指令所需参数进行预处理, 使得 SQL 关键词在 SQL 语句中的语法含义 被破坏, 然后才根据该预处理后 SQL 指令所需参数生成 SQL 指令, 并根据该生成的 SQL 指令 来进行数据库的数据处理, 从而使得即便执行了遗漏SQL转义步骤而构造出的SQL指令时, 也会因为 SQL 语法错误而无法执行, 避免产生信息泄漏等危害 ; 而对于不包含 SQL 关键词 的 SQL 指令所需参数, 也不受流程的任何影响, 即使执行了漏掉 SQL 转义步骤而构造的 SQL 指令, 也不会因为产生可执行命令而导致信息泄漏或影响到。

42、内容展示和用户阅读效果等后 果, 即, 采用该方案可以提高对数据库的保护效果, 而且, 不会影响到内容展示和用户阅读 效果 ; 进一步的, 该方案对系统没有特殊要求, 兼容性较好, 而且实现简单, 成本较低。 0113 实施例三、 0114 与实施例二相同的是, 在本实施例中, 同样以数据库数据处理请求具体为 WEB 请 求为例进行说明, 与实施例二不同的是, 在本实施例中, 将对另一种预处理方式进行说明 (在实施例二中, 以对 SQL 关键词进行尾部拼接私有万国码字符的替换处理为例进行说明, 而在本实施例中, 将以对 SQL 关键词进行头部拼接私有万国码字符的替换处理为例进行说 明) 。 0。

43、115 为了描述方便, 在本发明实施例中, 将该数据库的数据处理系统简称为数据处理 系统。 0116 例如, 该数据处理系统的应用场景如下 : 0117 该数据处理系统记录用户帐号信息的数据表名为 “userinfo” , 对应的帐号信息字 段名为 “username” , 密码字段名为 “pwd” , 用户提交的用户帐号参数名为 “username” , 密码 参数名为 “password” , SQL 转义方法为 StringUtil.encodeSQL, 该数据处理系统判断用户 登录信息是否合法的拼接 SQL 指令 (以 java 语言) 的代码为 : 说 明 书 CN 10390260。

44、6 A 11 9/13 页 12 0118 0119 0120 当然, 对于没有相关经验的开发者, 代码也可能如下 : 0121 0122 则以用户帐号为 “ABC” , 密码为 “1234” 为例, 最终在数据库执行的 SQL 指令为 : 0123 0124 则如图 3 所示, 一种数据库的数据处理方法, 具体流程可以如下 : 0125 301、 数据处理系统接收 WEB 请求 ; 0126 例如, 用户打开登录该数据处理系统的 WEB 页面, 然后输入用户帐号和密码, 并提 交请求进行登录, 则此时, 数据处理系统将会接收到请求登录的 WEB 请求。 0127 302、 数据处理系统根据该。

45、 WEB 请求获取 SQL 指令所需参数 (即生成 SQL 指令所需 的参数) 。 0128 则, 如果在步骤301中, 用户输入的密码为 “ABC” , 则获取到的SQL指令所需参数具 体可以如下 : 0129 0130 303、 数据处理系统遍历该获取到的 SQL 指令所需参数, 以进行 SQL 关键词识别 ; 0131 例如, 具体可以对该获取到的SQL指令所需参数进行SQL关键词匹配, 得到匹配后 SQL 关键词, 根据 SQL 关键词在 SQL 语句中的语法对匹配后 SQL 关键词进行检查, 得到符合 语法 (即 SQL 关键词在 SQL 语句中的语法) 的 SQL 关键词。 013。

46、2 比如, 若 SQL 指令所需参数为 : 0133 说 明 书 CN 103902606 A 12 10/13 页 13 0134 则此时数据处理系统可以对该 SQL 指令所需参数进行 SQL 关键词匹配, 得到 SQL 关键词 “or” , 然后再根据 SQL 关键词 “or” 在 SQL 语句中的语法对 SQL 关键词 “or” 进行检 查, 由于此 SQL 指令中的 “or” 的语法符合要求, 因此, 确定 “or” 为符合语法的 SQL 关键词。 0135 304、 数据处理系统对识别出的SQL关键词进行SQL关键词头部拼接私有万国码字 符的替换处理, 得到预处理后 SQL 指令所需。

47、参数, 比如对该符合语法的 SQL 关键词进行 SQL 关键词头部拼接私有万国码字符的替换处理, 得到预处理后 SQL 指令所需参数。 0136 例如, 若 SQL 指令所需参数为 : 0137 0138 则进行 SQL 关键词头部拼接私有万国码字符的替换处理后所得到的预处理后 SQL 指令所需参数为 : 0139 0140 需说明的是, 由于万国码私有使用区字符的含义和依赖于各系统具体实现, 因此 在本发明实施例中使用 “U+E000” 来表示私有万国码字符, 应当理解的是, 此处并不造成 限定。 0141 305、 数据处理系统根据预处理后 SQL 指令所需参数生成 SQL 指令, 并运行。

48、该生成 的 SQL 指令, 以进行数据库的数据处理 ; 例如, 具体可以如下 : 0142 (1) 对该预处理后 SQL 指令所需参数执行 SQL 转义和 SQL 关键词还原, 得到还原后 的 SQL 指令所需参数, 根据该还原后 SQL 指令所需参数生成 SQL 指令, 并运行该生成的 SQL 指令, 以进行数据库的数据处理。 0143 则基于前面所述的该数据处理系统的应用场景, 最终得到的在数据库执行的 SQL 指令为 : 0144 0145 其中, 预处理还原指的是删除预处理时所拼接的私有万国码字符。 0146 需说明的是, 由于在预处理时, 所拼接的是私有万国码字符, 而通用的浏览器对该 私有万国码字符无法确认展示方式, 所以即便不对该预处理后 SQL 指令所需参数进行预处 理还原操作 (即删除该私有万国码字符) , 该私有万国码字符将会被浏览器所忽略, 即用户 肉眼并看不出来, 因此不会影响到内容展示和用户阅读效果。 0147 例如, 以用户名为 “ABCs or” 为例, 若未执行预处理还原而直接显示到页面上, 则 其显示效果为 : 0148 “ABCsU+E000or” ; 0149 但由于通用的浏览器对该 U+E000 字符无法确认展示方式, 所以该 U+E000 字 符将被忽略, 因此, 用户实际肉眼看到的结果为 : 说 明 。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1