使用REGEX解析SQL是否安全

时间:2015-01-28 13:41:35

标签: c# sql regex oracle

我试图使用RegEx来部分验证Oracle SQL,但recently rediscovered a question about parsing HTML让我怀疑我的选择。

我创造了以下蜇伤(在SO及其同事的帮助下):

// C# code

// Find any semicolons with data afterwards
var match = Regex.Match(sql, @"^(.*;[ \t]*[\w\-;]+[\w\s\-]*$)", RegexOptions.Multiline);

// Find any multiline comments
match = Regex.Match(sql, @"/\*.*?\*/", RegexOptions.Singleline);

// Find any non-nested sql commands with a blank line inside them
match = Regex.Match(sql, @"(grant|(?<!\(\s*)select|insert|delete|update)\s+[^;]*(\r\n|\r(?!\n)|(?<!\r)\n)\s*(\r\n|\r(?!\n)|(?<!\r)\n)[^;]*;", RegexOptions.IgnoreCase);

这些是在集成测试套件中实现的,它首先在所有sql脚本上执行以检查明显的错误 - 在Oracle SQL Developer中运行的脚本,但不能在Linux环境中使用sqlplus运行。

我的问题是:我是否应该使用任何图书馆或其他技术 - 我是否听过Cthulu的电话或我的灵魂安全?

0 个答案:

没有答案