我有两个SQL查询,其中每次调用时我都尝试用+1和-1分别更新sup和opp值。
sup
opp
第一个查询:
query=update disc set sup=@sup, opp=@opp where did=@did int sup=getnoofsup(did); int opp = getnoofopp(did); com.Parameters.AddWithValue("@sup", sups + 1); com.Parameters.AddWithValue("@opp", opps - 1); com.Parameters.AddWithValue("@did", did); com.ExecuteNonQuery();
第二查询
string query="update disc set sup=sup+1, opp=opp-1 where did=@did" ; com.Parameters.AddWithValue("@did", did); com.ExecuteNonQuery();
因为@sup与我交换而在第二次注射查询中有任何威胁sup+1吗?
@sup
sup+1
不,第二个查询与第一个查询一样安全,因为它已完全参数化,因此没有提供外部数据可以通过其输入SQL查询本身文本的路径。该sup+1表达式是由RDBMS计算的,而不是由程序*计算的,因此它不能提供将新代码注入现有SQL的机会。
*,并且随后不会提供给SQL的exec存储过程进行重新解释。
exec