我有两个 SQL 查询,每次调用查询时,我都试图分别用 +1 和 -1 更新 supopp 值。

第一个查询:

    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();

由于我将 @supsup+1 交换,因此在第二次注入(inject)查询中是否存在任何威胁?

最佳答案

不,第二个查询与第一个查询一样安全,因为它是完全参数化的,因此不提供外部数据可以通过其输入 SQL 查询本身的文本的路径。 sup+1 表达式由 RDBMS 计算,而不是由您的程序*计算,因此它无法提供将新代码注入(inject)现有 SQL 的机会。

* 并且它不会随后呈现给 SQL 的 exec 存储过程进行重新解释。

关于c# - 就SQL注入(inject)而言,哪个sql查询更安全,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13932068/

10-13 00:49