Pythontr

husonet | Tarih: 05.06.2017

ASP.NET Dosya yükleme yapılırken dikkat edilmesi gerekenler

ASP.NET C# File upload ile ilgili çözümler nedir?

Merhabalar Arkadaşlar, (Not:Lütfen öneri ve sorularınızı yorum olarak atınız. Teşekkürler şimdiden)

Web uygulamalarında mesajlaşma panelinde veya detay gönderme bölümlerinde file upload kısımları yer almaktadır.Bunla ilgili dikkatli davranmazsak upload bizim uygulamamız için büyük risk veya güvenlik açığı olabilecek noktamız olabilir. O nedenle aşağıdaki sıraladığım noktalara dikkat etmeniz sağlıklı olacaktır.


    Dosya Türlerini Kısıtlayın

Dosya yüklenmesi için sadece ilgili dosyalara izin vermeniz çözüme odaklı olacaktır. Eğer kısım resimle ilgiliyse sadece resim dosyalarını kabul etmesi yada bir metin dosyalarıyla ilgiliyse doc, docx, pdf, odt uzantılı dosyalara izin verin. Bununla ilgili kısıtlamayı yapacak birkaç çözüm bulunmaktadır. İlk olarak uygulama uzantısına bakınız. Dosyayı içeri alırken uygulama uzantısına bakmanız yeterli olmayacaktır. Uygulama uzantısını değiştirip zararlı dosyayı upload etmeye çalışanlara karşın yüklenecek dosyanın content type, mime type 'ine bakınız. Bunla ilgili önceki makalemde asp.net ile uygulama geliştirirken mimetype kontrolü yapan class 'ıpaylaşmıştım.

Eğer yapınız ajaxise aynı kontrolleri hem javascript hem C# tarafında yapmanız daha sağlıklıdır. Javascriptler manipule edilebilmesine önlem olarak C#'daki kontrolleriniz güvenliliği sağlayacaktır.


    Dosya içeriği zararlı mı?

Bununla ilgili herhangi bir şekilde mimetype'den kaçan dosyaları içeriğine bakarak belirli black/white list hazırlayarak zararlı olup olmadıklarını kontrol etmemiz sağlıklı olacaktır.

    Upload edilen dosya güvenli yerde mi?

Upload gerçekleştirilen dosyanın root dışında olması daha güvenlidir. Herhangi bir şekilde kötü niyetli root'a zararlı dosya bırakıp root'u temizleyerek kalıcı hasar bırakabilir yada uygulamayı uçurabilir.

    [ph]Uygulama içinde dosyaların yazma yetkisi[/h]

Uyguluma root'unda bulunan dosyalarda sadece upload gerçekleştirecek dosyanın put yetkisi olması yeterlidir. Başka bir dosya'da put yetkisi olmamasına dikkat etmelisiniz.

    Dosya isimleri

Upload edilen dosya yükleme gerçekleştirirken ismi değiştirip yanına random rakam, sayı eklenmesi daha güvenlidir.Kolay bulunabilir bir dosya dışarıdan yetki dışında ulaşılabilir. Buna engel olunmalıdır.

    htaccess/web.config

web.config yada htaccess ile uygulama üzerinde açılacak dosyalar sınırlandırabilir. Bu uygulamasında sadece pdf dosyaları açılmasına izin verilsin gibi kurallar eklenebilir. Bu kurallar IIS tarafından eklenebileceği gibi web.config üzerinden de configurasyonları yapılabilir.

    Dosya boyutu

Yüklenecek dosya boyutunun max. bir değer belirlenmelidir. Ki uygulamaya içeri alınmayacak bir dosya bırakmak isteyen bile dosya içeri alınmamasına rağmen sunucuyu meşgul edeceğinden sunucu performansına etki edecek hasarlar verecektir. Bunda dikkatli olunmalıdır.

    Third part uygulamalar

Upload gerçekleştirilirken üçünçü part uygulama yada kütüphaneler kullanılacaksa en son sürümleri kullanılmalıdır. Açık kaynaklı kütüphanelerinde xss açığı olması muhtameldir. Buna yönelik önlemler de alınmalıdır.

İyi çalışmalar.