Dosya Yükleme Güvenliği: Upload Alanını Profesyonelce Korumak
Upload alanları neden risklidir?
Kullanıcıdan dosya almak, uygulamaya dışarıdan içerik sokmak anlamına gelir. Kontrolsüz upload alanı zararlı PHP dosyası, büyük dosya ile kaynak tüketimi, sahte MIME tipi veya XSS içeren dosya gibi riskler oluşturabilir.
Uzantı ve MIME kontrolü
Sadece dosya adındaki uzantıya bakmak yeterli değildir. Sunucu tarafında MIME tipi kontrol edilmeli ve izin verilen türler net belirlenmelidir. Örneğin blog kapakları için JPG, PNG ve WEBP yeterli olabilir.
Rastgele dosya adı
Kullanıcının gönderdiği dosya adı doğrudan kullanılmamalıdır. Rastgele veya zaman damgalı güvenli bir isim üretmek çakışmaları ve path manipülasyon risklerini azaltır.
Upload klasöründe PHP çalıştırma
Upload klasörü içinde PHP çalışması kapatılmalıdır. Apache ortamında .htaccess ile PHP dosyalarını engellemek etkili bir savunmadır. Nginx gibi ortamlarda benzer kural sunucu konfigürasyonunda yapılmalıdır.
Kontrol listesi
- Dosya boyutu sınırı koy.
- İzin verilen uzantıları whitelist olarak tanımla.
- MIME tipi doğrula.
- Dosya adını temizle veya yeniden üret.
- Upload klasöründe script çalıştırmayı kapat.
- Dosyayı public sunmadan önce mümkünse yeniden işle.