ASP’de SQL Injection Ataklarından Korunmak

1. Kodumuz:

<% IF Not IsNumeric(Request.QueryString("id")) THEN Response.Write "SQL Injection Atağı Tespit Edildi!" Response.End END IF %>

Bu kodumuzu hayat diline uyarlarsak; “id” QueryString’i eğer Numeric (Sayısal) bir değer değilse ekrana “SQL Injection Atağı Tespit Edildi!” yazdır ve geri kalan tüm işlemleri durdur. Bu kodumuzu id QueryString’imizi almadan hemen önceki satıra yazmalısınız.

Örneğin;


<% IF Not IsNumeric(Request.QueryString("id")) THEN Response.Write "SQL Injection Atağı Tespit Edildi!" Response.End END IF id=Request.QueryString("id") Set kayit_setiniz=Server.CreateObject("adodb.recordset") SQL="Select * From musteri Where id=" & id kayit_setiniz.open SQL,bag,1,3 %> 2. Kodumuz:

<% IF kayit_setiniz.eof THEN Response.Write "İstediğiniz Veri Bulunamadı!" Response.End END IF %> Bu kodumuz ise eğer veritabanından istenilen herhangi bir veri bulamaz ise ekrana “İstediğiniz Veri Bulunamadı!” yazdırarak geri kalan tüm işlemleri durduruyor. Bu kodumuzu da QueryString’imizi alıp gerekli tablo bağlantısını yaptıktan hemen sonra ki satıra yazıyoruz;

<% id=Request.QueryString("id") Set kayit_setiniz=Server.CreateObject("adodb.recordset") SQL="Select * From musteri Where id=" & id kayit_setiniz.open SQL,bag,1,3 IF kayit_setiniz.eof THEN Response.Write "İstediğiniz Veri Bulunamadı!" Response.End END IF %>

Peki bunun SQL Injection ile ne alakası var? Derseniz, işte cevabı; saldırgan dosya_adi.asp?id=3 gibi bir yere saldıracağı zaman klasik hata verdirme yöntemi olan ‘a yı dener başarılı olamaz ise id QueryString’ine olmayan sayısal bir değer girer; dosya_adi.asp?id=99999999 gibi eğer verdiğim ikinci kod gibi bir koruma şekil yok ise veritabanı hata verir ve oluşan hata ile veritabanından kolayca veri çekilebilinir. Böylece saldırgan amacına ulaşmış olur.

Son olarak kodlarımızın son hali şu şekildir;





<% IF Not IsNumeric(Request.QueryString("id")) THEN Response.Write "SQL Injection Atağı Tespit Edildi!" Response.End END IF id=Request.QueryString("id") Set rs=Server.CreateObject("adodb.recordset") SQL="Select * From musteribi Where id=" & id rs.open SQL,bag,1,3 IF kayit_setiniz.eof THEN Response.Write "İstediğiniz Veri Bulunamadı!" Response.End END IF %>

Hiç yorum yok:

 


BilgininAdresi Bilginin Tek Kaynağı

BilgininAdresi Bilginin Tek Kaynağı

BilgininAdresi Bilginin Tek Kaynağı

BilgininAdresi Bilginin Tek Kaynağı

BilgininAdresi Bilginin Tek Kaynağı

BilgininAdresi Bilginin Tek Kaynağı

BilgininAdresi Bilginin Tek Kaynağı

BilgininAdresi Bilginin Tek Kaynağı

BilgininAdresi Bilginin Tek Kaynağı

BilgininAdresi Bilginin Tek Kaynağı

BilgininAdresi SEO Yarışması BilgininAdresi.NET SEO Yarışması Katılımcısı

="BilgininAdresi SEO Yarismasi"" href= " http://www.bilgininadresi.net">BilgininAdresi.NET SEO Yarismasi Katilimcisi