一种数据库的数据处理方法和系统的制作方法

文档序号:6494070阅读:221来源:国知局
一种数据库的数据处理方法和系统的制作方法
【专利摘要】本发明实施例公开了一种数据库的数据处理方法和系统。本实施例采用破坏SQL关键词在SQL语句中的语法含义来对SQL指令进行预处理,然后才根据该预处理后SQL指令所需参数生成SQL指令,并根据SQL指令进行数据库的数据处理,从而使得即便执行了遗漏SQL转义步骤而构造出的SQL指令时,也会因为SQL语法错误而无法执行,避免产生信息泄漏等危害;而对于不包含SQL关键词的SQL指令所需参数,也不受流程的任何影响,即使执行了漏掉SQL转义步骤而构造的SQL指令,也不会因为产生可执行命令而导致信息泄漏或影响到内容展示和用户阅读效果等后果。
【专利说明】一种数据库的数据处理方法和系统
【技术领域】
[0001]本发明涉及通信【技术领域】,具体涉及一种数据库的数据处理方法和系统。【背景技术】
[0002]随着信息技术的发展,数据库的作用也越发显得重要,如何保护数据库中信息的安全,一直是人们所关注的问题。结构化查询语言(SQL, Structured Query Language)注入攻击是黑客对数据库进行攻击的常用手段之一,其中,SQL是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。SQL注入攻击,指的是在输入参数的字符串之中注入SQL指令,使得其能够在设计不良的程序当中被忽略检查,从而使得这些注入的SQL指令能够被数据库服务器误认为是正常的SQL指令而运行,最终致使数据库信息泄漏等严重后果的攻击行为。
[0003]针对SQL注入攻击,现有技术主要采用保护方法有:(I)动态拼接SQL语句的时候将参数值进行SQL转义,避免构造出恶意SQL语句;(2)对已经拼接好的SQL语句做语法分析,通过相应算法检测来推测当前SQL语句是否恶意;(3)针对网页(web)请求参数值强行替换单个单引号为连续两个单引号,再直接进行SQL转义。(4)使用存储过程或第三方中间
;五古
P口口 ο
[0004]在对现有技术的研究和实践过程中,本发明的发明人发现,现有的几种保护方法虽然在一定程度上可以避免SQL注入攻击,但是其保护效果并不是很好,可能会因为遗漏SQL转义步骤而产生可执行命令,从而导致信息泄漏等后果,而且可能会影响到内容展示和用户阅读效果。

【发明内容】

[0005]本发明实施例提供一种数据库的数据处理方法和系统,可以有效地避免SQL注入攻击,提高对数据库的保护效果,而且,不会影响到内容展示和用户阅读效果。
[0006]一种数据库的数据处理方法,包括:
[0007]接收数据库数据处理请求,根据所述数据库数据处理请求获取SQL指令所需参数;
[0008]对所述SQL指令所需参数进行SQL关键词识别和预处理,得到预处理后SQL指令所需参数,所述预处理包括破坏SQL关键词在SQL语句中的语法含义的处理;
[0009]根据所述预处理后SQL指令所需参数生成SQL指令,并根据所述SQL指令进行数据库的数据处理。
[0010]可选的,其中,所述对所述SQL指令所需参数进行SQL关键词识别和预处理,得到预处理后SQL指令所需参数,所述预处理包括破坏SQL关键词在SQL语句中的语法含义的处理,可以包括:
[0011]对所述SQL指令所需参数进行SQL关键词识别;对识别出的SQL关键词进行SQL关键词尾部拼接私有万国码字符的替换处理,得到预处理后SQL指令所需参数;或者,对识别出的SQL关键词进行SQL关键词头部拼接私有万国码字符的替换处理,得到预处理后SQL指令所需参数。
[0012]可选的,其中,所述对所述SQL指令所需参数进行SQL关键词识别,可以包括:
[0013]对所述SQL指令所需参数进行SQL关键词匹配,得到匹配后SQL关键词;根据SQL关键词在SQL语句中的语法对匹配后SQL关键词进行检查,得到符合语法的SQL关键词。
[0014]可选的,所述根据所述预处理后SQL指令所需参数生成SQL指令,并根据所述SQL指令进行数据库的数据处理,可以包括:
[0015]根据所述预处理后SQL指令所需参数生成SQL指令,并运行生成的SQL指令,以进行数据库的数据处理。
[0016]或者,可选的,所述根据所述预处理后SQL指令所需参数生成SQL指令,并根据所述SQL指令进行数据库的数据处理,可以包括:
[0017]对所述预处理后SQL指令所需参数进行SQL转义和预处理还原,得到还原后SQL指令所需参数,所述预处理还原为删除预处理时所拼接的私有万国码字符;根据所述还原后SQL指令所需参数生成SQL指令,并运行生成的SQL指令,以进行数据库的数据处理。
[0018]相应的,本发明实施例还提供一种数据库的数据处理系统,在本发明实施例中,简称为数据处理系统,包括接收单元、第一处理单元和第二处理单元;
[0019]接收单元,用于接收数据库数据处理请求,根据所述数据库数据处理请求生成SQL指令所需参数;
[0020]第一处理单元,用于对所述SQL指令所需参数进行SQL关键词识别和预处理,得到预处理后SQL指令所需参数,所述预处理包括破坏SQL关键词在SQL语句中的语法含义的处理;
[0021]第二处理单元,用于根据所述预处理后SQL指令所需参数生成SQL指令,并根据所述SQL指令进行数据库的数据处理。
[0022]可选的,其中,所述第一处理单元可以包括识别子单元和预处理子单元;
[0023]识别子单元,用于对所述SQL指令所需参数进行SQL关键词识别;
[0024]预处理子单元,用于对识别出的SQL关键词进行SQL关键词尾部拼接私有万国码字符的替换处理,得到预处理后SQL指令所需参数;或者,对识别出的SQL关键词进行SQL关键词头部拼接私有万国码字符的替换处理,得到预处理后SQL指令所需参数。
[0025]可选的,其中,所述识别子单元,具体可以用于对所述SQL指令所需参数进行SQL关键词匹配,得到匹配后SQL关键词,根据SQL关键词在SQL语句中的语法对匹配后SQL关键词进行检查,得到符合语法的SQL关键词。
[0026]可选的,第二处理单元,具体用于根据所述预处理后SQL指令所需参数生成SQL指令,并运行生成的SQL指令,以进行数据库的数据处理。
[0027]或者,可选的,第二处理单元,具体用于对所述预处理后SQL指令所需参数进行SQL转义和预处理还原,得到还原后SQL指令所需参数,所述预处理还原为删除预处理时所拼接的私有万国码字符;根据所述还原后SQL指令所需参数生成SQL指令,并运行生成的SQL指令,以进行数据库的数据处理。
[0028]本发明实施例采用破坏SQL关键词在SQL语句中的语法含义来对SQL指令所需参数进行预处理,然后才根据该预处理后SQL指令所需参数生成SQL指令,并根据所述SQL指令进行数据库的数据处理,从而使得即便执行了遗漏SQL转义步骤而构造出的SQL指令时,也会因为SQL语法错误而无法执行,避免产生信息泄漏等危害;而对于不包含SQL关键词的SQL指令所需参数,也不受流程的任何影响,即使执行了漏掉SQL转义步骤而构造的SQL指令,也不会因为产生可执行命令而导致信息泄漏或影响到内容展示和用户阅读效果等后果,即,采用该方案可以提高对数据库的保护效果,而且,不会影响到内容展示和用户阅读效果。
【专利附图】

【附图说明】
[0029]为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0030]图1是本发明实施例提供的数据库的数据处理方法的流程图;
[0031]图2是本发明实施例提供的数据库的数据处理方法的另一流程图;
[0032]图3是本发明实施例提供的数据库的数据处理方法的又一流程图;
[0033]图4是本发明实施例提供的数据库的数据处理系统的结构示意图。
【具体实施方式】
[0034]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0035]为了更好地对本发明实施例进行说明,以下将对本发明实施例所涉及的几个概念进行简略说明,如下:
[0036]( I) SQL 关键词;
[0037]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 等,在此不再赘述。
[0038](2)万国码(Unicode);
[0039]万国码是计算机领域的一项业界标准,该规范给每个字符提供了一个唯一的数字,不论是什么平台、不论是什么程序、以及不论是什么语言。
[0040]( 3 )万国码私有使用区;
[0041]万国码私有使用区指的是万国码规范中针对未进行万国码编码的特殊字符,比如古文字,或系统私有字符,所预留的编码区域,各系统可使用这个区域中的编码来表示在本系统内的特殊字符,万国码私有使用区中的字符即称为私有万国码字符。
[0042](4) SQL 转义;
[0043]在SQL语法中,参数值里的单引号需要用两将单个连续单引号来表示,因此将参数值字符串中单个单引号替换成连续两个单引号的做法称为SQL转义。[0044]本发明实施例提供一种数据库的数据处理方法和系统。以下分别进行详细说明。
[0045]实施例一、
[0046]本发明实施例将从数据库的数据处理系统的角度来进行描述,该数据库的数据处理系统具体可以安装在终端或服务器中。
[0047]一种数据库的数据处理方法,包括:接收数据库数据处理请求,根据该数据库数据处理请求获取SQL指令所需参数;对该SQL指令所需参数进行SQL关键词识别和预处理,得到预处理后SQL指令所需参数,其中,该预处理包括破坏SQL关键词在SQL语句中的语法含义的处理;根据预处理后SQL指令所需参数生成SQL指令,并根据该生成的SQL指令进行数据库的数据处理。
[0048]如图1所示,具体流程可以如下:
[0049]101、接收数据库数据处理请求,根据该数据库数据处理请求获取SQL指令所需参数;
[0050]其中,数据库数据处理请求具体可以为网页(WEB)请求或数据库数据查询请求等请求。
[0051]102、对步骤101中获取到的SQL指令所需参数进行SQL关键词识别和预处理,得到预处理后SQL指令所需参数,其中,预处理包括破坏SQL关键词在SQL语句中的语法含义的处理,例如,具体可以如下:
[0052]对SQL关键词进行SQL关键词尾部拼接私有万国码字符(即Unicode私有使用区字符)的替换处理,得到预处理后SQL指令所需参数;或者,对SQL关键词进行SQL关键词头部拼接私有万国码字符的替换处理,得到预处理后SQL指令所需参数。
[0053]即步骤“对步骤101中获取到的SQL指令所需参数进行SQL关键词识别和预处理,得到预处理后SQL指令所需参数”(即步骤102)具体可以如下:
[0054](I)对步骤101中获取到的SQL指令所需参数进行SQL关键词识别;例如,具体可以如下:
[0055]对步骤101中获取到的SQL指令所需参数进行SQL关键词匹配,得到匹配后SQL关键词,根据SQL关键词在SQL语句中的语法对匹配后SQL关键词进行检查,得到符合语法的SQL关键词。
[0056]可见,此处的SQL关键词识别并不是简单的匹配,而是在匹配之后,还要进行再次检查,从而可以精准找出符合需求的SQL关键词。
[0057](2)对识别出的SQL关键词进行SQL关键词尾部拼接私有万国码字符的替换处理,得到预处理后SQL指令所需参数;或者,对识别出的SQL关键词进行SQL关键词头部拼接私有万国码字符的替换处理,得到预处理后SQL指令所需参数。
[0058]例如,若在(I)中已得到符合语法的SQL关键词,则此时具体可以对该符合语法的SQL关键词进行SQL关键词尾部拼接私有万国码字符的替换处理,得到预处理后SQL指令所需参数;或者,也可以对该符合语法的SQL关键词进行头部拼接私有万国码字符的替换处理,得到预处理后SQL指令所需参数。
[0059]需说明的是,以上仅仅以在SQL关键词的尾部或头部拼接私有万国码字符为例进行说明,应当理解的是,还可以采用其他的预处理方式,即只要可以破坏SQL关键词在SQL语句中的语法含义即可。[0060]103、根据预处理后SQL指令所需参数生成SQL指令,并根据所述SQL指令进行数据库的数据处理;例如,具体可以如下:
[0061]根据该预处理后SQL指令所需参数生成SQL指令,并运行生成的SQL指令,以进行数据库的数据处理。
[0062]或者,也可以对预处理后SQL指令所需参数进行SQL转义和预处理还原,然后才根据还原后SQL指令所需参数生成SQL指令,并运行生成的SQL指令,即步骤“根据预处理后SQL指令所需参数生成SQL指令,并根据所述SQL指令进行数据库的数据处理”具体也可以如下:
[0063]对预处理后SQL指令所需参数进行SQL转义和预处理还原,得到还原后SQL指令所需参数,然后根据该还原后SQL指令所需参数生成SQL指令,并运行生成的SQL指令,以进行数据库的数据处理。
[0064]其中,预处理还原为:删除预处理时所拼接的私有万国码字符。
[0065]需说明的是,由于在预处理时,所拼接的是私有万国码字符,而通用的浏览器对该私有万国码字符无法确认展示方式,所以该私有万国码字符将会被浏览器所忽略,即用户肉眼并看不出来,因此不会影响到内容展示和用户阅读效果。
[0066]由上可知,本实施例采用破坏SQL关键词在SQL语句中的语法含义来对SQL指令所需参数进行预处理,然后才根据该预处理后SQL指令所需参数生成SQL指令,并运行该SQL指令以进行数据库的数据处理,从而使得即便执行了遗漏SQL转义步骤而构造出的SQL指令时,也会因为SQL语法错误而无法执行,避免产生信息泄漏等危害;而对于不包含SQL关键词的SQL指令所需参数,也不受流程的任何影响,即使执行了漏掉SQL转义步骤而构造的SQL指令,也不会因为产生可执行命令而导致信息泄漏或影响到内容展示和用户阅读效果等后果,即,采用该方案可以提高对数据库的保护效果,而且,不会影响到内容展示和用户阅读效果。
[0067]根据实施例所描述的方法,以下将在实施例二和三中举例作进一步详细说明。
[0068]实施例二、
[0069]在本实施例中,将以数据库数据处理请求具体为WEB请求为例进行说明,其中,为了描述方便,在本发明实施例中,将该数据库的数据处理系统简称为数据处理系统。
[0070]例如,该数据处理系统的应用场景如下:
[0071]该数据处理系统记录用户帐号信息的数据表名为“userinfo”,对应的帐号信息字段名为“username”,密码字段名为“pwd”,用户提交的用户帐号参数名为“username”,密码参数名为“password”,SQL转义方法为StringUtil.encodeSQL,该数据处理系统判断用户登录信息是否合法的拼接SQL指令(以java语言)的代码为:
[0072]
【权利要求】
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指令,以进行数据库的数据 处理。
【文档编号】G06F17/30GK103902606SQ201210583455
【公开日】2014年7月2日 申请日期:2012年12月28日 优先权日:2012年12月28日
【发明者】李宗波 申请人:腾讯科技(深圳)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1