Güvenli Dosya Yükleme (File Upload) Mimarisi: Nelere Dikkat Edilmeli?
2 Eylül 2026
Dosya yükleme, birçok web uygulamasının vazgeçilmez bir özelliğidir: profil fotoğrafı, belge, ek. Ancak yükleme, saldırganın sunucuya kendi seçtiği içeriği koymasına imkân verdiği için doğru tasarlanmadığında ciddi risklere açılır — sunucuda kod çalıştırmadan, depolama ve dağıtım istismarına kadar. Bu yazıda güvenli bir yükleme mimarisinin bileşenlerini ele alıyoruz.
Riskler
- Sunucuda kod çalıştırma: Yüklenen bir betik dosyası (ör.
.php), web kökünde çalıştırılabilir bir konuma düşerse, saldırgan onu tarayıcıdan çağırarak sunucuda kod çalıştırabilir. - Yanlış içerik türü sunumu: Zararlı bir HTML/SVG dosyası, tarayıcıda çalışan bir betik olarak sunulursa (stored XSS’e benzer) diğer kullanıcıları etkiler.
- Depolama ve kaynak istismarı: Çok büyük veya çok sayıda dosya, disk ve bant genişliğini tüketebilir.
- Yol manipülasyonu: Dosya adındaki
../gibi diziler, dosyanın beklenmeyen bir konuma yazılmasına yol açabilir.
Güvenli mimarinin bileşenleri
- Dosyaları web kökünün DIŞINDA saklayın veya bir nesne deposunda (object storage) tutun. Yüklenen içerik, doğrudan çalıştırılabilir bir yolda olmamalı.
- Dosya adını siz üretin. Kullanıcının verdiği adı kullanmayın; rastgele bir kimlik üretin ve orijinal adı yalnız meta veri olarak saklayın. Bu, yol manipülasyonunu ve üzerine yazmayı engeller.
- İçerik türünü içerikten doğrulayın. Yalnız uzantıya veya istemcinin bildirdiği MIME’a güvenmeyin; dosyanın gerçek türünü (magic bytes) kontrol edin ve bir allowlist ile sınırlayın.
- Sunum sırasında güvenli başlıklar kullanın. İndirmelerde
Content-Disposition: attachmentve doğruContent-Typeile tarayıcının içeriği çalıştırmasını engelleyin;X-Content-Type-Options: nosniffekleyin. - Boyut ve hız sınırı koyun. Maksimum dosya boyutu ve yükleme sıklığı sınırı, kaynak istismarını azaltır.
- Görüntüleri yeniden işleyin. Resimleri sunucuda yeniden kodlamak (re-encode), gömülü zararlı içeriği büyük ölçüde temizler.
Özet
Güvenli dosya yükleme, “kullanıcı içeriğine asla çalıştırılabilir muamelesi yapma” ilkesine dayanır. Dosyaları web kökü dışında saklayın, adı siz üretin, türü içerikten doğrulayın, güvenli başlıklarla sunun ve boyut/hız sınırı koyun. Bu katmanlar birlikte, yüklemeyi bir saldırı kapısı olmaktan çıkarır.
Kaynaklar: OWASP File Upload Cheat Sheet, CWE-434.
Dosya yükleme uç noktalarınızın güvenliği doğru kurgulanmış mı? CyberTestify’ın dış yüzey ve aktif doğrulama testleri, keşfedilen yükleme noktalarını değerlendirir.