2013-08-21 60 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

相關問題