C# 方法RetrieveTableDisplay()调用使用来自不受信任源的输入生成的SQL查询
方法C# 方法RetrieveTableDisplay()调用使用来自不受信任源的输入生成的SQL查询,c#,asp.net,sql-injection,fortify,C#,Asp.net,Sql Injection,Fortify,方法RetrieveTableDisplay()调用使用来自不可信源的输入构建的SQL查询。此调用可能允许攻击者修改语句的含义或执行任意SQL命令 string sql = SqlHelper.GetSqlString(Constants.RetrieveTableDisplay) + tableName + " WHERE ACCOUNT_NBR='" + AccountNumber + "' ORDER BY " + GenerateOrderByClause(
RetrieveTableDisplay()
调用使用来自不可信源的输入构建的SQL查询。此调用可能允许攻击者修改语句的含义或执行任意SQL命令
string sql =
SqlHelper.GetSqlString(Constants.RetrieveTableDisplay) + tableName +
" WHERE ACCOUNT_NBR='" + AccountNumber +
"' ORDER BY " + GenerateOrderByClause(tableName) + " ) a ) where rn > " +
(currentPageNumber * currentPageSize).ToString() + " AND rn <= " +
((currentPageNumber * currentPageSize) + currentPageSize).ToString();
string recordCount =
"select count(*) from " + tableName +
" WHERE ACCOUNT_NBR='" + AccountNumber + "'";
//Issue is somewhere here of sql injection
if (!Utils.IsUnitTestCase)
{
try
{
using (DbCommand cmd =
OraDB.GetSqlStringCommand(this.ProcessTableName(sql)))
{
using (IDataReader reader = OraDB.ExecuteReader(cmd))
{
object o = OraDB.ExecuteScalar(CommandType.Text, recordCount);
if (o != null)
{
lstEntities.TotalRecords = Convert.ToInt32(o);
}
while (reader.Read())
{
objBasTransactionLog = new BASTransactionLog();
PopulateEntity(objBasTransactionLog, reader);
lstEntities.Add(objBasTransactionLog);
}
}
}
}
}
stringsql=
SqlHelper.GetSqlString(Constants.RetrieveTableDisplay)+tableName+
“其中账户编号=”+账户编号+
“'ORDER BY”+GenerateOrderByClause(tableName)+”)a),其中rn>”+
(currentPageNumber*currentPageSize).ToString()+”和rn防止SQL注入的推荐方法是使用SqlParameter
。
不要使用字符串连接添加参数值
请参见您将代码审核的结果转储到此处,并希望我们为您修复它,这样您就不必做任何努力来研究和解决此问题了?请重新阅读和。很抱歉,我向像您这样的天才提出了此问题。如果您帮不上忙,请不要让任何人难堪。我已经自己解决了此问题。但是我很同情你,因为你没有时间来解决这个问题,却让你有很多时间。问题是你的问题没有答案,因为没有问题。