Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Membangun kueri dinamis di C# (SQL Injection Attack)

Membangun kueri dengan cara ini membuatnya rentan terhadap serangan injeksi SQL kecuali jika Anda secara manual lolos dari input Anda (I.E. Membuat nilai 'projectID' tidak mungkin mengubah struktur kueri dengan menggunakan urutan pelarian khusus mesin database). Namun, cara yang disarankan untuk melakukannya adalah menggunakan kueri berparameter (terkadang disebut "Pernyataan yang Disiapkan"). Dengan kueri berparameter, Anda cukup menentukan struktur kueri dan kemudian memberikan nilai input secara terpisah sebagai parameter, mencegah struktur kueri Anda berubah melalui injeksi SQL.

Ini contoh Anda, diubah untuk menggunakan parameterisasi:

public DataSet GetProject(string projectID)
{
   DataSet dataTable = new DataSet(); 
   DataAccess dataAccess = new DataAccess();
   OracleCommand commandOb = new OracleCommand();
   strQuery = @"select projectName, managerName
                  from project
                  where projectID = :ProjectID"

   cmd.CommandText = strQuery;
   cmd.Parameters.AddWithValue("ProjectID", projectID);
   dataTable = dataAccess.ExecuteDataAdapter(commandOb);

   return dataTable;
}

Parameter ':ProjectID' dalam kueri akan diganti dengan nilai yang diberikan dalam metode 'AddWithValue'. Tidak peduli berapa nilai dalam variabel 'projectID', itu akan selalu dievaluasi sebagai bagian dari klausa WHERE. Bahwa sebelumnya, nilai yang mirip dengan ['; DELETE FROM project;--] dapat memiliki pengaruh yang tidak diinginkan dengan mengubah kueri Anda menjadi sebagai berikut:

select projectName, managerName
  from project
  where projectID = ''; DELETE FROM project;--'


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Untuk mengubah tipe data kolom dari clob ke xmltype

  2. Sql - alternatif dari WITH ... AS

  3. Kesalahan SQLPlus AUTO_INCREMENT

  4. Bagaimana cara kerja fungsi HEXTORAW()? Apa itu algoritma?

  5. Sepenuhnya Memahami PDO ATTR_PERSISTENT