ASP.NET Sql İnjection Korunma

ASP.NET’te Sql İnjectiondan nasıl korunabileceğinizi anlatacağım.

Sql İnjection, Sql sorgularının arasına meta karakterler koyarak sisteme girmek, veri çekmek, veri düzenlemek, veri silmek gibi işlemlerin yapılabildiği bir saldırı yöntemidir. Bu saldırılardan korunmak için yapılabilecek bir çok yöntem vardır. Ben birkaç tanesini anlatacağım.

1)  Karakter Kısıtlaması

Karakter kısıtlaması olarak bahsettiğimiz şey inputlara girilecek veri tipine göre kısıtlama yapmaktır. Örneğin Tc girilecek bir alana rakamdan başka bir veri girilmemesini sağlarsanız saldırılara karşı bir çözüm yolu üretmiş olursunuz.

2) Parametre Kullanılması

SQL sorgusu kullanırken inputlardan alınan veriler direk olarak Komutun içine yazılmamalı parametre olarak gönderilmelidir. Aşağıdaki örneği inceleyerek kendinize göre düzenleyebilirsiniz.


SqlCommand komut = new SqlCommand("select * from Giris where Kullaniciadi=@kad and Sifre=@sifre", baglan.con);
komut.Parameters.AddWithValue("@kad",kad.Text);
komut.Parameters.AddWithValue("@sifre",sifre.Text);
SqlDataReader dr = komut.ExecuteReader();

3) İnputlara Karakter Kontrolü Yapılması

Sql İnjection için kullanılan belirli özel karakterler ( ‘ / ; / = )  vardır. Bunları Replace komutu kullanarak boşluk ile değiştirirseniz saldırı ihtimalini ortadan kaldırmış olursunuz. Bunun için bir class oluşturuyoruz ve aşağıdaki kodu içine yapıştırıyoruz.


public class Saldiri
{
public string Korun(string Input)
{

string data = Input.Trim();
data = data.Replace(">", "");
data = data.Replace("<", "");
data = data.Replace(">", "");
data = data.Replace("<", "");
data = data.Replace("--", "");
data = data.Replace("'", "");
data = data.Replace(";", "");
data = data.Replace("=", "");
data = data.Replace("char ", "");
data = data.Replace("delete ", "");
data = data.Replace("insert ", "");
data = data.Replace("update ", "");
data = data.Replace("select ", "");
data = data.Replace("truncate ", "");
data = data.Replace("union", "");
data = data.Replace("script ", "");

return data;

}
}

Kullanırken Textboxın textchanged eventine yada butonun click eventine yazarak kullanabilirsiniz.  Kullanım şekli:


Saldiri nesne = new Saldiri();

kad.Text = injec.Korun(kad.Text);

Furkan Aktaş

Bilgisayar Mühendisiyim. Microsoft MCSA Web Applications Sertifikasına Sahibim. Aktif iş hayatımda Full Stack .Net Developer olarak çalışmaktayım.

3 thoughts on “ASP.NET Sql İnjection Korunma

  • Aralık 6, 2018 tarihinde, saat 8:47 am
    Permalink

    C99 gibi sheller hakkında bilgi paylaşabilir misiniz ?

    Yanıtla
    • Aralık 6, 2018 tarihinde, saat 11:24 am
      Permalink

      Bu konuda pek bilgi sahibi değilim ama en kısa sürede öğrenip paylaşacağım.

      Yanıtla
  • Ekim 19, 2021 tarihinde, saat 12:52 pm
    Permalink

    Thanks for this article.

    Yanıtla

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir