- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
面向数据库性能SQL语句解析与翻译
面向数据库性能SQL语句解析与翻译
摘 要: 信息泄漏事件不断发生使得数据库安全的重要性不断提高。基于SQL解析能够实现SQL到自然语言的翻译,帮助非专业人员分析数据库的访问活动和识别风险。通过SQL词法和语法的EBNF描述构造了可以用于LL的规则输入,使用ANTLR工具生成了SQL词法和语法解析器。进一步,SQL词法和语法解析器实现了SQL语句到抽象语法树的转换。并通过解析抽象语法树,将SQL语句翻译成自然语言。最后,将SQL解析和翻译功能应用在数据库防火墙和安全审计系统中。
关键词: SQL解析; LL解析器; ANTLR; 抽象语法树; SQL翻译; 数据库安全
中图分类号: TN918.91?34; TM417 文献标识码: A 文章编号: 1004?373X(2016)11?0099?04
Abstract: The continuous occurrence of information leakage incidents makes the importance of database security improve constantly. The SQL parse can realize the translation from SQL to natural language, and help the non?specialized people to analyze the database access activities and identify the risks. The rule input applied to LL was constructed by means of EBNF description of SQL morphology and syntax. The SQL morphology and parser are generated with ANTLR tool, which can realize the conversion from SQL statement to abstract syntax tree. The SQL statement can be translated into natural language by parsing the abstract syntax tree. Finally, SQL parse and translation function are applied to the database firewall and safety audit system.
Keywords: SQL parse; LL parser; ANTLR; abstract syntax tree; SQL translation; database security
0 引 言
近几年,信息泄漏事件频繁发生,用户对数据库的安全性越来越关注。由于数据库本身的复杂性,数据库的管理运行、日常维护和数据安全保护只能由专业的数据库管理员进行。但是,很多使用数据库的人并不熟悉数据库,甚至完全不了解数据库。SQL分析技术能够帮助用户快速抽取SQL语句中的字段、表、视图及对它们的操作,快速识别SQL语句的风险。同时基于SQL分析技术能够将SQL语句翻译成自然语言,使之更容易被理解,有助于实现安全控制。
早期的SQL解析使用Lex,Yacc的比较多。虽然Oracle已经将ANTLR应用在SQL Developer的IDE中,但是SQL Developer并非开源使用。因此使用ANTLR进行SQL解析的研究目前还很少,进行SQL翻译的工作还未见报道。在使用ANTLR解析SQL并且将结果进行进一步分析是一个新的尝试。本文针对数据库安全,基于LL文法,采用ANTLR工具,实现了SQL的词法和语法解析器,并进一步实现了SQL语句到自然语言的翻译。最后,将SQL解析和翻译功能应用在数据库防火墙和安全审计系统中,对于提高数据库的安全防护能力具有很大的实际意义。
1 SQL解析器
1.1 SQL词法解析器实现
SQL语言的词法主要分为标识符、数字、注释与提示、字符串、时间、区间和变量。基于ANTLR实现SQL词法解析首先要定义词法的fragment。所谓的fragment是词的一部分,而不会出现在词法解析的结果中。以数字和时间为例分析。
(1) 数字Number。在SQL语言中表示数值类型。数值类型包含整数部分、小数部分、符号部分、指数部分和类型部分,其中指数部分是一个大写字母“E”或者一个小写字母“e”加一个带有符号的整数,如果不带符号默认为“+”。数值类型中,整数部分和小数部分必须包含其中之一
文档评论(0)