-1
RetrieveTableDisplay()
메서드는 신뢰할 수없는 소스에서 가져온 입력을 사용하여 SQL 쿼리를 호출합니다. 이 호출은 공격자가 명령문의 의미를 수정하거나 임의의 SQL 명령을 실행할 수있게합니다.메서드 RetrieveTableDisplay()는 신뢰할 수없는 소스에서 오는 입력을 사용하여 작성된 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);
}
}
}
}
}
사용자 정의 권장 사항 :
구제는 SQL 문을 구축 할 문자열 연결을 사용하지 않을 것입니다. SQL 문을 작성하는 데 Prepared statements (placeholder라고도 함)를 사용해야합니다.
Using Parameters for SQL Server Queries and Stored Procedures을 참조하십시오 우리가 당신을 위해 그것을 해결하기 위해 기대? [둘러보기]와 [질문]을 읽어 다시 시작하십시오. – CodeCaster
미안하지만 나는이 질문을 당신 같은 천재의 사람들에게 물었다. 당신이 도울 수 없다면 누구나 당황하지 마십시오. 나는 그것을 혼자서 해결했다. 그러나 나는 당신이 문제를 해결하기 위해 tym을 가지지 않고 있지만 당황하게하기 위해 많은 시간을 갖고 있다는 것을 당신에게 안타까워합니다. – Dilip
문제는 질문이 답할 수 없기 때문에 대답 할 수 없다는 것입니다. – CodeCaster