【发布时间】:2011-02-25 18:00:47
【问题描述】:
我需要解析部分 SQL 查询(用于 SQL 注入审计工具)。例如
'1' AND 1=1--
应该分解成类似的标记
[0] => [SQL_STRING, '1']
[1] => [SQL_AND]
[2] => [SQL_INT, 1]
[3] => [SQL_AND]
[4] => [SQL_INT, 1]
[5] => [SQL_COMMENT]
[6] => [SQL_QUERY_END]
他们是否至少是我的基础的 SQL 词法分析器或任何好的工具,如用于 C# 的野牛(尽管我宁愿不编写自己的语法,因为我需要支持 MySQL 5 的大部分语法,如果不是全部的话)
【问题讨论】:
-
您不想自己为真正的 SQL 方言(如 MySQL)编写 SQL 解析器。从提供它的供应商处获取实现。
-
就像这个答案中描述的:stackoverflow.com/questions/76083/parsing-sql-in-net/…,你可以只使用 ANTLR,一个 OO 解析器生成器,并使用这里的 MySQL 方言文件:antlr.org/grammar/list。可以使用了。
标签: c# sql mysql parsing lexer