《一种数据库的数据处理方法和系统.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 字 符将被忽略, 因此, 用户实际肉眼看到的结果为 : 说 明 。