问题描述
我使用以下方法从我的应用程序中调用存储过程,它运行良好。
主要问题是,当我在我的应用程序上运行 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 (将#修改为@)