SQL ile uygulama geliştirirken sql injection ile uygulamamızın hacklenmemesi için aşağıdaki injection ile beraber diğer injection yöntemlerinide araştırıp gerekli önlemleri alabilirsiniz. Bu makalemizde sıklıkla uygulanan sql injectionlardan bahsediceğiz.
İlk bahsediceğimiz konulardan biri querystring ile işlem yapılan sayfalarda querystringden faydalanıp injection uygulanabilir Asp.Net tarafında querystring’den aldığımız kullaniciID’sini sql’e ek yaparak kullanıcının bilgisini çekebileceğimiz kod aşağğıdaki gibidir.
1 2 | var txtKullaniciID = Request.QueryString("kullaniciID"); var txtSorgu = "SELECT * FROM Kullanicilar WHERE KullaniciID = " + txtKullaniciID; |
Yukarıdaki kod asp.net’de querstring’den kullaniciID’sini alarak sql sorgusuyla birleştiren örnek kodda querstring’den farklı sql işlemleride gönderilebilirdi buda sql injection oluşmasına neden olmaktadır.
Sql injection’da en sık kullanılan yöntemlerden biri 1=1’dir
Bu yöntem ile kullaniciID eşleşmesi sağlanmaması durumunda or 1=1 yazıldığında eğer bir bire eşitse anlamıyla her zaman sonuç doğru çıkacağından kullanicilar tablosundaki tüm kayıtlar getirilecektir. örnek olarak aşağıdaki sql kodunda eğer 105 nolu kullanıcıID’si bulunmazsa bile or 1=1 ile tüm kullanıcılar getirilecektir.
1 | SELECT * FROM Kullanicilar WHERE KullaniciID=105 or 1=1 |
Bu tür injection’lar yememek için paramatreli işlemler yapmaya özen göstermelisiniz. Parametreli sorgular hazırlamak sizi tam anlamıyla güvenlikli kod yazmanızı sağlamaz ama en azından güvenliğini arttırmış olursunuz.