2016-07-22 22 views
1

Oracleデータベースに接続してJSON結果を返すためのコードを以下に示します。しかし、以下のコードは、SQLインジェクションのような問題を抱えているようですが、どうすればそれらを現在のコードであるかをパラメータ化することができます。私はちょうどあなたがコマンドにパラメータを設定し、このアイデアを試してみてくださいOracleCommandのパラメータ化されたOracleクエリへの変更

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); 
    } 
} 

答えて

1

されます:System.Dataを使用して

。 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); 
} 
関連する問題