SQL İnjection Korunma Yöntemleri - Asp ile Form Post

Bu Dersimizde bi önceki derste querystring yani get metodundan gelen saldırlardan korunma yöntemini anlatmıştım şimdi ise başka bir yöntem olan form post lardan yapılan injectionlardan korunma yollarını göstereceğim.

Bu Dersimizde bi önceki derste querystring yani get metodundan gelen saldırlardan korunma yöntemini anlatmıştım şimdi ise başka bir yöntem olan form post lardan yapılan injectionlardan korunma yollarını göstereceğim.

İlk olarak bir siteye sql inejection yapabilmek için en gerekli olan en önemli unsur asp sayfamızın sql de işleyeceği veriyi dinamik olarak almasıdır yani kullanıcının müdehale edebileceği imkanlar sağlamasıdır işte böyle durumlarda saldırıdan korunmak için düzenli bir filtreleme uygulamamız gerekmektedir.

Örnek Bir Saldırı:
Bir üye giriş bölümümüz var bu bölüme girişi formlar aracılığı ile sağlıyoruz.
2 adet form alanımız bunlardan biri kullanıcı adı bir diğer ise şifre ve bunlar form aracılığı ile uyekontrol.asp a gönderiyoruz.

verileri request.form ile çekip databasemize sql sorgumuzda kullanıyoruz ve buna göre işlem yaptırıyoruz.

Örnek Kod Cümlesi :


dim uye,sifre

uye = request.form("kullaniciadi")

sifre = request.form("sifre")

"Select * from Uyeler where uye_ad="& uye &" and Uye_pass="& sifre &""



işte bu şekilde oluşturulmuş bir sistem bariz bir şekilde açık barındırmaktadır.
Burada Saldırgan 'or' 'or 1=1 'or''=' gibi cümleciklerle sql cümlemizi bypass etmiş olur.

Korunma Yöntemi :

Bu Tip saldırılardan korunmak için öncelikle sql cümlemizde kullanacağımız veriyi filtreden geçirmemiz lazım bunun içinde bir fonksiyondan yararlanabiliriz.

<%

'/////////////////////////////////////////////////////

'// Güvenlik için girilen karakterleri uygun karakterlere çeviriyoruz

'/////////////////////////////////////////////////////

function OziBABA(sanalkurs)

sanalkurs = Replace (sanalkurs ,"`","",1,-1,1)

sanalkurs = Replace (sanalkurs ,"=","",1,-1,1)

sanalkurs = Replace (sanalkurs ,"&","",1,-1,1)

sanalkurs = Replace (sanalkurs ,"!","",1,-1,1)

sanalkurs = Replace (sanalkurs ,"*","",1,-1,1)

sanalkurs = Replace (sanalkurs ,"/","",1,-1,1)

sanalkurs = Replace (sanalkurs ,"","",1,-1,1)

sanalkurs = Replace (sanalkurs ,"And","",1,-1,1)

sanalkurs = Replace (sanalkurs ,"'","",1,-1,1)

sanalkurs = Replace(sanalkurs, "-", "")

OziBABA=sanalkurs

end function

%>


Fonksiyonumuz bu bu şekilde gelen verideki tırnak işeratlerini vb karakterleri temizliyoruz.

Bunun kullanımı ise OziBABA(request.form("Gelenveri"))
şeklindedir.

Bu Şekilde form post saldırılarından kurtulabiliriz.

Herhangi bir soru veya şikayetiniz için Ozanduman@yahoo.com.tr mail ve msn adresimi kullanabilirsiniz.
  • Etiketler;
Yorum Yaz

Yorum yazabilmek için üye girişi yapmanız gerekiyor!

Ozan bey çook teşekkür ederim makaleniz için gerçekten çoook yararlı bir makale. Ama hala birçok sitede SQL Injection kaynaklı hacklenmeler var. Sizce sebebi ne olabilir?
yorumun için teşekkürler arkadaşım şu an hala sql injection yöntemiyle site hacklenmesinin en büyük sebebi webmaster arkadaşların dikkatsizliği ve aceleciliğidir ayrıca sql injection saldırısı diğer saldırı teknikleri ile birlikte kullanılabilmektedir. Sitenizin veya sisteminizin tam olarak güvenli olduğundan emin olmanız için bir çok güvenlik taktiğini öğrenmelisiniz. unutmayınki her gün yeni yeni saldırı yöntemleri çıkıyor
rezervasyon formlarında ve bunun gibi veri girişi yapılan yerlerde eğer insert into gibi bir komutla kayıt yapılıyorsa saldırı gerçekleştirilebilir fakat recordset ile kayıt yapılıyorsa sql gerçekleşmez.

Yukarı Git