SQL 命令中使用的特殊元素的不当中和“SQL 注入”

问题描述

我使用以下方法从我的应用程序中调用存储过程,它运行良好。 主要问题是,当我在我的应用程序上运行 veracode 时,它​​在 ExecuteReader 上给我以下错误

sql 命令中使用的特殊元素的不当中和('sql 注入')”

解决问题的参考如下,

"https://cwe.mitre.org/data/deFinitions/89.html"

如您所见,我的以下方法中没有静态查询,并且已调用 Parameters.Add 为存储过程添加参数。 我之前已经按照静态查询参数的参考链接解决方解决了这个错误,但在下面的方法中没有涉及查询,所以我 我很困惑如何解决它。

谁能指导我解决错误解决方案?我不想更改调用存储过程的方法,因为这会影响我的整个生产应用程序。

public static List<Dictionary<string,object>> callProcForOutput(string procName,Dictionary<string,string> procParam,sqlConnection conn)
{
    List<Dictionary<string,object>> outvalues = new List<Dictionary<string,object>>();
    List<sqlParameter> parameters = new List<sqlParameter>();
    using (sqlCommand command = new sqlCommand(procName,conn))
    {
        procParam.ForEach(x => parameters.Add(new sqlParameter(x.Key,(object)x.Value)));

        command.CommandTimeout = 90;
        command.CommandType = CommandType.StoredProcedure;

        foreach (sqlParameter parameter in parameters)
        {
            command.Parameters.Add(parameter);
        }            

       
        command.Transaction = TransactionManager.TransManager.Transaction;

       
        sqlDataReader rdr = command.ExecuteReader();
        Dictionary<string,object> keyvalues = new Dictionary<string,object>();
        while (rdr.Read())
        {
            keyvalues = Enumerable.Range(0,rdr.FieldCount).ToDictionary(rdr.GetName,rdr.GetValue);
            outvalues.Add(keyvalues);
        }
        rdr.Close();
        return outvalues;
       
    }
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)