我有两个 SQL 查询,每次调用查询时,我都试图分别用 +1 和 -1 更新 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
交换,因此在第二次注入(inject)查询中是否存在任何威胁? 最佳答案
不,第二个查询与第一个查询一样安全,因为它是完全参数化的,因此不提供外部数据可以通过其输入 SQL 查询本身的文本的路径。 sup+1
表达式由 RDBMS 计算,而不是由您的程序*计算,因此它无法提供将新代码注入(inject)现有 SQL 的机会。
* 并且它不会随后呈现给 SQL 的 exec
存储过程进行重新解释。
关于c# - 就SQL注入(inject)而言,哪个sql查询更安全,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13932068/