2013-08-21 58 views
0

我想修改我的代码,如下所示,但修改后我的正则表达式不工作。我做错了什么?这个正则表达式代码有什么问题?

我的代码

Regex reg = new Regex("(ALTER TABLE .+ REFERENCES\\s+)\"USER1\"[.](.+)"); 
richTextBox1.Text = reg.Replace(richTextBox1.Text, "$1$2"); 

修改后的代码

Regex reg = new Regex(String.Format("(ALTER TABLE .+ REFERENCES\\s+)\"{0}\"[.](.+)",textbox1.text); 

richTextBox1.Text = reg.Replace(richTextBox1.Text, "$1$2"); 
+1

rickTextBox1.Text中的“{0}”? '{}'通常用于定义的重复,您可以尝试转义大括号:'\ {0 \}'。 – Jerry

+10

没有没有没有没有这是即使比CONCATENATION更不要生成与REGEX SQL! –

+0

借调它不是,如果你综合sql,你将会遇到很多麻烦**。 sql注入的风险太高了,如果你的代码会被审查,那么肯定不会通过。改用预先准备的语句和宿主变量。 – collapsar

回答

3

与您的代码的根本问题从SQL Injection Attacks威胁造成的。

这种使用正则表达式或不使用正则表达式来动态构建sql语句并使用字符串操作的方法会带来危险。

现在停止

你更集中的问题消失。

使用一些使用参数替换的方法。带有参数或ORM的ADO.Net命令,或者可能编写存储过程。

+0

我不认为它与SQL注入无关。这只是一个简单的句子,显示在richtextBox – user2661591

+0

@ user2661591,好吧,我知道,人类的助攻是必需的,以执行攻击。这只是一个编写SQL的工具吗? – Jodrell

+0

只是一个像玩具一样写脚本的工具 – user2661591

相关问题