0

私は、対処するC#に精通していないというかなり単純な状況にあります。

Web サービスから返された DataTable オブジェクトがあります。ユーザーがデータをフィルター処理して分析できるようにしたいので、DataView オブジェクトを作成します。私はリストボックスを持っています

基本的な機能の 1 つは、データの検索を実行できるようにすることです。だから私は賢くなり、テキストボックスとテキストボックスのイベントを追加します。

private void textbox1_TextChanged(object sender, EventArgs e)
{

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

問題は、ユーザーが誤って特殊文字 ([ または ] または * など) を入力すると、一致式が台無しになる可能性があることです。古典的な SQL インジェクションの安全性の問題のようなものです。問題は、SQL ブラックリストの文字が十分に文書化されていることです (そして、多くの場合、ライブラリには文字列を安全にするメソッドが含まれています。これは非常に一般的な問題であるためです) が、この "RowFilter" 式は SQL ではなく、十分に文書化されたブラックリストやエスケープがありません。文字。

この問題をエレガントに解決する方法を知っている人はいますか?

4

1 に答える 1