2016-04-12 33 views
3

Ekle/Güncelle ve Seçme Sorgularını kullanan bir DB2 veritabanı kullanan bir .net web sitesinde çalışıyorum. SQL Injection hakkında araştırma yaptım ve SQL Injection'dan kaçınmak için sorgumu parametrelendirdiğime inanıyorum. Doğru bir şekilde yapıp yapmadığımı kontrol edebilir misiniz ve bunu yapmanın daha iyi bir yolu ya da daha yeterli yolu var mı?C# - Parametreli Sorgu

strInsert = "INSERT INTO DATABASE.Table(NUMBER,SIGNATURE,MESSAGE,CDATE,CTIME) VALUES (?,?,?,?,?)"; 

DB2Command cmdInsertQuery = new DB2Command(strInsert, db2Connection1); 

cmdInsertQuery.Parameters.Add("NUMBER", i); 
cmdInsertQuery.Parameters.Add("SIGNATURE", strSignature.Trim()); 
cmdInsertQuery.Parameters.Add("MESSAGE", strMessage.Trim()); 
cmdInsertQuery.Parameters.Add("CDATE", DateTime.Now.ToShortDateString()); 
cmdInsertQuery.Parameters.Add("CTIME", DateTime.Now.ToShortTimeString()); 
cmdInsertQuery.ExecuteNonQuery(); 

Sorgu, verileri doğru bir şekilde ekler ve iyi çalışır.

+4

Bana iyi görünüyor kullanmaktır. SQL enjeksiyonunun farkında olduğunu görmekten memnun oldum. SO, insanların açıkça görmediği sorularla dolu ve her seferinde beni rahatsız ediyor. Sıklıkla her gün kullandığım önemli yazılımın ne kadarını merak ediyorum - ör. Online pişirme yazılımı, vb. - SQL enjeksiyon risklerini düzgün bir şekilde ele almamıştır. –

+2

Belki daha iyi http://codereview.stackexchange.com/ – HoneyBadger

+0

içinde yerleştirildi Teşekkürler. Kullanıyor ?,?,? iyi veya daha iyi değerler (@NUMBER vs) kullanıyor mu? @ Kullanarak bazı insanlar gördüm ve sadece birkaç kullanarak gördüm?,?,? vb – user6097989

cevap

0

Evet, doğru bir şekilde yaptınız. SQL enjeksiyon sorunlarının farkında olduğunuzu ve onu ortadan kaldırmanın yollarını denediğinizi bilmek çok güzel.

0

eklenti kullanımı addwithvalue itiraz edildi, hala neredeyse eklenti ile aynı şeyi yapar ama benim visual studio hep ağlıyor o

Örnek

string insertStatement = 
      "Insert Login VALUES(@username,@password,@publicKey,@privateKey,@salt)"; 
      SqlCommand insertCommand = new SqlCommand(insertStatement, connection); 
      insertCommand.Parameters.AddWithValue("@username", username);