在我的搜索中,我看到了以下形式的SQL查询中使用参数化字符串:
SqlCommand comm = new SqlCommand();
comm.CommandText="SELECT * FROM table WHERE field LIKE '%'+@var+'%'";
comm.Parameters.AddWithValue("var","variabletext");
SqlDataReader reader = comm.ExecuteReader();
然而,在这个论坛中提到,尽管它被用在参数化字符串中,但仍然容易受到SQL注入的攻击。我只能假设,拼接的字符串可以绕过所有参数化安全性,直接将值插入为一个字符串。如果是这种情况,那么在参数化查询中如何使用通配符运算符,同时避免SQL代码注入?
LIKE '%'+@var+'%'
是可以的。 - Martin Smith