最近,我在數據表通過數據視圖以下列方式做過濾:在ADO.Net Datatable中防止注入的最佳方法?
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一個說法....
但是,當我通過單引號附加字符串colValue,它會拋出異常......所以,我以爲我錯過了注射預防的地方... –
嗯,你能發佈異常嗎? –
當我將'Silver(單引號追加)作爲參數傳遞給ColVal和Like運算符時,它會拋出「Syntax error:Missing operand after'silver'operator。」.... –