bit*_*mix 7 mysql sql syntax parsing lexical
我正在研究SQL 入侵检测系统(IDS),我需要解析传入的SQL查询.编写自己的SQL解析器是一项长期任务,它永远不会完全反映本机解析器中使用的逻辑.我发现MySQL有一个带有主源文件的词法分析器sql/sql_lex.cc
和一个用bison构建的语法分析器sql/sql_yacc.y
.我真的很有兴趣重用这个强大的解决方案.我正在用C/C++构建我的IDS,所以我正在寻找一些方法将MySQL解析器与我的检测系统连接起来.
我想知道是否有可能重用MySQL解析器(词法+语法分析器)以某种逻辑形式获得SQL查询的结构,例如语法树.可能吗?是否有一些相关的文字,教程或项目?
谢谢
我已经完成了我的IDS的第一个版本作为我的学士项目的一部分.它是作为MySQL的插件实现的.
我将列出我理解MySQL内部的主要资料来源.然后我简要介绍一下我在IDS中使用的方法.
我的解决方案的源代码可以在sourceforge找到.我打算在其wiki中记录更多内容.
主要入口点是audit_ids_notify()
函数audit_ids.cc
.该插件采用内部MySQL解析器生成的查询树,使其简化版本(以节省内存).然后它进行异常检测 - 它具有已知查询树结构的列表,并保留关于每个查询树结构的每个可参数化部分的一些统计信息.输出将写入MySQL数据目录中的特殊日志文件.
我试图使解决方案模块化和可扩展.初始版本是一种演示,并且性能未得到优化,尤其是在SQL存储模块中.
我确定了两种可能的方法并使用了第一种方法.
如果有一些与此主题相关的问题/问题我可以随时回答;)
归档时间: |
|
查看次数: |
1879 次 |
最近记录: |