Avatar
Konuyu Takip Et

Sql injection nedir?

  • Toplam: 0 Oy - Ortalama: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Sql injection nedir? Sql injection nedir? Sql injection nedir? Sql injection nedir?

Bu konuya 0 cevap gönderildi
Avatar
  • *
  • Üye Grubu
  • Yorum Sayısı:118
  • Konu Sayısı:87
  • Üyelik Tarihi:04-10-2015
Asp.net Sql injection zaafiyeti ve alınacak önlemler

Merhaba arkadaşlar, bu yazımda

sql injection zaafiyeti
nden bahsediyor olacağım. Web uygulamalarının olmazsa olmazı veri tabanlarıdır. Veri tabanı ile uygulamayı sql cümlecikleri ile konuştururuz. Bu konuşturma sırasında oluşabilecek 
zaafiyetlerden birisi sql injection zaafiyetidir. 


Sql injection, kullanıcının program içindeki sql sorgu cümleciğine müdahale edilebilmesidir aslında. Kullanıcı sql cümleciğine müdahale ederek yetkisi olmayan verilere erişebilir. Bu da kullanıcı bilgilerinden tutun gizli bilgilerin dışarıya açık hale gelmesi demektir.

Uygulamalarda bilgi gizliliği ve yetkilendirmeyi yok eden sql injection'ı önlemek için sql ile uygulamanın konuşturulması sırasında dikkat edilmelidir. Bunun için stored procedure kullanılabilir. Bu bir önlemdir ancak stored procedure kullanılmasına rağmen halen sql injection açığı bulunma ihtimali vardır. Bu nedenle sql sorgularının parametre ile verilip türü beliritilmesi açığı bi nebze de önleyebilecek yöntemlerdendir. Bir dedışarıdan gelen parametrelerdeki '" ve = karakterleri sorgudan önce ezilmelidir. Bu açıklamamı aşağıda örnek kod satırları ile açıklayacağım.

Aşağıda sorgu gerçekleşmeden gerekli karakterlerin ezme işlevi yapan fonksiyonu kullanabilirsiniz.


public string security(string data)
   {
       if (data != null)
       {
           if (data.Contains("&"))
               data = data.Replace("&", "&");
           if (data.Contains("&"))
               data = data.Replace("&", "&");

           if (data.Contains("<"))
               data = data.Replace("<", "<");
           if (data.Contains("<"))
               data = data.Replace("&", "&");

           if (data.Contains(">"))
               data = data.Replace(">", ">");
           if (data == ">")
               data = data.Replace("<", "<");

           if (data.Contains("'"))
               data = data.Replace("'", "'");
           if (data.Contains("'"))
               data = data.Replace("'", "'");
           if (data == "'")
               data = data.Replace("'", "'");

           if (data.Contains("\""))
               data = data.Replace("\"", """);
           if (data.Contains("""))
               data = data.Replace(""", """);

           if (data.Contains("="))
               data = data.Replace("=", "");

       }
       return data;
   }



Aşağıdaki kod satırları da örnek select sorgu satırlarıdır. 


using (SqlConnection conn = new SqlConnection(System.Configuration.ConfigurationManager.
ConnectionStrings["DefaultConnection"].ConnectionString))
           {
                 deger = security(deger);
                query = "SELECT * from TABLO_ADI where ID=@ID";
                   using (SqlCommand cmd = new SqlCommand(query, conn))
                   {
                       cmd.Parameters.Add("@ID", SqlDbType.Varchar).value = deger;
                       conn.Open();
                       using (SqlDataReader row = cmd.ExecuteReader())
                       {
                           while (row.Read())
                           {


                            }
                       }
                    }
                   conn.close();
            }



Güvenli uygulamalar!

[-]
Hızlı Cevap

İnsan Doğrulama:
Aşağıda görünen onay kutusunu işaretleyiniz. Bu işlem otomatik spam kayıtları önlemek için kullanılır.

Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Mimetype nedir? tuğrul 0 794 09-05-2017, Saat: 11:39
Son Yorum: tuğrul