2013-04-05 49 views
0

我有一個相當簡單的情況,我只是沒有熟悉C#來解決。C#DataColumn表達式中的非法和異常字符

我有一個從webservice返回的DataTable對象。我希望用戶能夠過濾和分析數據,以便創建一個DataView對象。我有一個列表框是

其中一個基本功能是我希望他們能夠執行數據搜索。所以我很聰明,爲文本框添加一個文本框和一個事件。

private void textbox1_TextChanged(object sender, EventArgs e) 
{ 

     ((DataView)listbox1.DataSource).RowFilter = "mycolumn LIKE '*"+textbox1.Text+"*'"; 
} 

問題是,如果用戶在進入事故任何特殊字符(比如[或]或*)它可以擰了匹配表達式。它就像一個傳統的SQL注入安全問題。問題是SQL黑名單字符被很好地記錄(並且通常庫甚至會包含使字符串sql安全的方法,因爲這是一個常見問題),但是這個「RowFilter」表達式不是SQL,並且沒有充分記錄的黑名單或轉義字符。

有沒有人有如何優雅地解決這個問題的想法?

+1

LIKE表達式使用'%'符號作爲通配符,你可以使用參數或string.Format()來做到這一點,並以這種方式構建你的表達式......還要檢查如果字符串「!Contains」一些特殊字符,然後你可以繼續前進的過濾器 – MethodMan 2013-04-05 14:17:48

回答