因此,我正在編寫一個處理程序,它使用DataView RowFilter屬性基於AppRelativeCurrentExecutionFilePath篩選緩存的DataTable。對輸入進行編碼以防止注入攻擊的最佳方式是什麼?針對.NET DataView的注入攻擊RowFilter
下面是否足夠?有更好/更優雅的方式嗎?
dataView.RowFilter = String.Format("Name LIKE '{0}%'", EncodeString(query));
private string EncodeString(string s)
{
StringBuilder sb = new StringBuilder();
for (int i = 0; i < s.Length; i++)
{
char c = s[i];
if (c == '*' || c == '%' || c == '[' || c == ']')
sb.Append("[").Append(c).Append("]");
else if (c == '\'')
sb.Append("''");
else
sb.Append(c);
}
return sb.ToString();
}
我不認爲你可以在這裏注入SQL ...只有導致異常。但是,是的,這正是我所做的。 – dotjoe 2009-08-12 14:12:34
如果您使用的是內存數據,爲什麼使用'DataTable'而不僅僅是任何集合?你可以用'Where'來過濾它,而不需要打針。 – 2012-08-16 20:10:30
@SergRogovtsev - 我在09年問過這個問題,所以它可能是一個.NET 1.1應用程序。企業升級緩慢。 – MyItchyChin 2012-08-20 17:32:31