PHP sayfalarınızda upload kontrolünü kullanacaksanız, hackerların sisteminize basitçe sızasını önlemek için bir kaç önemli noktayı bilmelisiniz..
PHP sayfalarınızda kullanıcılara herhangi bir konuda upload hakkı verebilirsiniz. Mesela avatarlarını yüklemeleri konusunda onlara kolaylık sağlamak amacıyla vs. olabilir bu. İşte bu durumlarda hackerlara da aynı hakkı vermiş olursunuz ve bu hakkı onlardan esirgemelisiniz belki de.. Neden mi çünkü onlar avatar yükleme yerine çalıştırmak istedikleri bir FSO'yu sisteminize upload edecek, ardından da www.siteniz.com/images/avatarlar/fso.php şeklinde tam yolu tarayıcılarına yazarak bu dosyayı sizin sisteminiz için çalıştırarak sunucunuzun izin verdiği ölçüde sisteminizde at koşturacaklardır. Bu durumda yapılması gerekenler basit ancak hayati önem taşıyan ayrıntılar..
Öncelikle System.IO.Path ve System.Text.Regex namespacelerini kullanacağız.
Önce upload edilmek istenen dosyasın uzantısını kontrol edeceğiz ve istediğimiz uzantılar dışındakileri kabul etmeyeceğiz. Mesela .exe, .asp, .php, .cgi uzantılı dosyaları uyumsuz uzantılı dosya olarak görüp, kabul etmeyeceğiz. Tabi bunu sadece resim uzantılarına izin vererek yapmak daha mantıklı olacağından o şekilde yapalım..
string dosyauzanti = System.IO.Path.GetExtension(FileUpload1.PostedFile.FileName);
Ardından kabul ettiğimiz uzantıları belirleyeceğiz ve bunların dışındakilerin yüklenememesini sağlayacağız.
using System.Text.RegularExpressions;
.....
if(Regex.IsMatch(dosyauzanti,".jpg|.jpeg|.gif|.png|.bmp") == false)
{
// gönderilen dosya formatı uygun değil
}
else
{
// gönderilen dosya formatı uygun.
}
Eğer dosya uzantılarını büyük harfli olarak gönderirse kullanıcı sistemin bunu da kabul etmesi için şöyle bir kod ekleyebilirsiniz :
dosyauzanti = dosyauzanti.ToLower();
Herkese başarılar, saygılarımla..