2016-07-22 15 views
1

Ich habe den folgenden Code für die Verbindung zu einer Oracle-Datenbank und die Rückgabe von JSON-Ergebnis. Aber der untenstehende Code scheint Probleme wie sql injection zu haben, wie kann ich ändern, dass sie den aktuellen Code zu parametrisieren. Muss ich sein OracleCommand nurWechsel zu einer parametrisierten Oracle-Abfrage

public class SampleController : ApiController 
    { 
    public string Getdetails(int id) 
    { 
     using (var dbConn = new OracleConnection("DATA SOURCE=h;PASSWORD=C;PERSIST SECURITY INFO=True;USER ID=T")) 
     { 

      var inconditions = id.Distinct().ToArray(); 
      var srtcon = string.Join(",",inconditions); 
      dbConn.Open(); 
      var strQuery = @"SELECT PRIO_CATEGORY_ID AS PRIO, LANG_ID AS LANG, REC_DATE AS REC, REC_USER AS RECUSER, DESCR, COL_DESCR AS COL, ROW_DESCR AS DROW, ABBR FROM STCD_PRIO_CATEGORY_DESCR WHERE REC_USER IN ("+srtcon+")"; 
      var queryResult = dbConn.Query<SamModel>(strQuery); 
      return JsonConvert.SerializeObject(queryResult); 
    } 
} 

Antwort

1

Sie sollten diese Idee versuchen, Parameter in einem Befehl Einstellung:

using System.Data; mit System.Data.SqlClient;

using (SqlConnection connection = new SqlConnection(connectionString)) 
{ 
    DataSet userDataset = new DataSet(); 
    SqlDataAdapter myDataAdapter = new SqlDataAdapter(
     "SELECT au_lname, au_fname FROM Authors WHERE au_id = @au_id", 
     connection);     
    myCommand.SelectCommand.Parameters.Add("@au_id", SqlDbType.VarChar, 11); 
    myCommand.SelectCommand.Parameters["@au_id"].Value = SSN.Text; 
    myDataAdapter.Fill(userDataset); 
}