最近、次の方法で DataView を介してデータテーブルでフィルタリングを行っています。
public static DataTable FilterDatatable(this DataTable dtable,string @operator, string colName, string colValue)
{
if (dtable != null && dtable.Rows.Count > 0)
{
DataView dataView = dtable.DefaultView;
if (@operator.Equals(SqlOperator.Like , StringComparison.InvariantCultureIgnoreCase))
{
dataView.RowFilter = colName + " " + @operator + " '%" + colValue + "%'";
}
else
{
dataView.RowFilter = colName + " " + @operator + " " + colValue;
}
return dataView.ToTable();
}
return dtable;
}
ここで、インジェクションを防ぐためのメソッドを書くことができますが(私が知っているインジェクション)、実際には、SQLパラメータと同じようにデータテーブルへのインジェクションを防ぐ最善の方法がわかりません。
上記のメソッドは、単一引用符が追加された文字列を ColVal の引数として送信すると例外をスローします....