Bu yazımda  web sitelerinde  kötü niyetli dosya çalıştırma ve bir asp.net projesinde  bu saldırılardan korunma yöntemlerinden birinden bahsedeceğim.Bir web uygulamamız olduğunu ve bu uygulamamızda üyelik sistemi olduğunu düşünelim.Bu siteye üye olan kullanıcılar FileUpload kontrolü ile profiline resim yüklediklerinde www.siteadi.com/users/pictures klasöründe saklansın.Peki kendini hacker sanan bir arkadaş FileUpload ile resim yüklemek yerine index.asp dosyasını yüklerse sonuç ne olur sizce?

Dosyayı yüklediğinde www.siteadi.com/users/pictures/index.asp şeklinde direkt bir erişim sağlayabilir ve kendi dosyasını sizin sisteminizde çalıştırabilir,tabi önleminizi almazsanızJHatta açılış sayfanızı silip kendi sayfasını bile koyabilir.Bu tarz olaylarla karşılaşmamak için dosya yükleme yapmadan önce gerekli işlemleri yapmalıyız ve System.IO ve System.Text.RegularExpressions isim alanlarını eklememiz lazım.İlk olarak yüklenecek dosyanın uzantısını almamız gerekiyor.Bunu Path.GetExtension metodu ile şu şekilde yapabilirsiniz.

string ext = System.IO.Path.GetExtension(FileUpload1.PostedFile.FileName);

Dosya uzantısını aldıktan sonra uzantının hepsinin büyük ya da hepsinin küçük harfle başlayıp başlamadığını kontrol etmemiz gerekmektedir.Ben daha çok hepsini küçük harfe çevirerek kullanıyorum.ext = ext.ToLower();Son olarak Regex sınıfının IsMatch metodunu kullanarak yüklenecek dosyanın  istediğimiz dosya formatları ile uyuşup uyuşmadığını kontrol ediyoruz.Hepsi bu kadar!

if (Regex.IsMatch(ext,".jpg|.jpeg|.bmp|.gif"))

{    

    //TODO:Resim formatı uygun

}

else

{
  //TODO:Uygun olmayan dosya formatı

}

Gördüğünüz gibi bu tip saldırıları önlemek oldukça kolay.Basit bir saldırı yöntemi olmasına rağmen üzücü sonuçlar yaratabilecek kadar da iyi bir yöntem.

Kolay gelsin!

About the Author