Kullanıcıların dosya yükleyebildiği bir özellikte hangi güvenlik önlemlerini alırsınız?
Cevap
Yüklenen dosya güvenilmeyen girdidir. Temel ilkeler: içeriği doğrula, boyutu sınırla, dosyayı uygulama sunucusundan ayrı bir yerde sakla ve asla çalıştırılabilir şekilde sunma.
Önlemler
- Tip kontrolü sunucuda yapılmalı: dosya uzantısına ve tarayıcının gönderdiği
Content-Type'a güvenmeyin; dosyanın ilk byte'larına (magic number) bakın. İzin verilen tipler beyaz liste ile belirlenmeli. - Boyut limiti: hem reverse proxy'de (
client_max_body_size) hem uygulamada; presigned URL kullanılıyorsacontent-length-rangekoşulu ile. - Dosya adını kullanmayın: kullanıcının verdiği isim path traversal (
../../etc/passwd) içerebilir. Sunucuda rastgele bir ad (UUID) üretin, orijinal adı sadece metadata olarak saklayın. - Ayrı depolama ve ayrı alan adı: dosyaları S3 gibi object storage'da, mümkünse
usercontent.ornek.comgibi ayrı bir alan adından sunun. Böylece yüklenen bir HTML/SVG dosyası ana sitenin cookie'lerine erişemez. - Doğru başlıklarla sunun:
Content-Disposition: attachment,X-Content-Type-Options: nosniff. SVG ve HTML, içinde script barındırabileceği için özellikle risklidir. - Görselleri yeniden işleyin: sharp gibi bir kütüphaneyle yeniden encode etmek, gizli payload'ları ve EXIF (konum) verisini temizler.
- Virüs taraması: ClamAV veya bulut sağlayıcının tarama servisiyle, dosya "tarandı" durumuna geçmeden paylaşılmamalı.
- Erişim kontrolü: özel dosyalar herkese açık bucket'ta durmamalı; kısa ömürlü signed URL ile sunulmalı.
- Zip bomb / decompression: arşivleri açıyorsanız toplam boyut ve dosya sayısı limiti koyun.
import { fileTypeFromBuffer } from "file-type";
const type = await fileTypeFromBuffer(buffer);
if (!type || !["image/png", "image/jpeg", "application/pdf"].includes(type.mime)) {
throw new Error("Desteklenmeyen dosya tipi");
}İlgili Web Güvenliği soruları
- CORS nedir? Neden CORS hatası alırız?
- XSS ve CSRF saldırıları nedir, nasıl korunulur?
- Authentication ile authorization arasındaki fark nedir?
- Güvenli cookie ayarları nelerdir? Session hijacking nasıl önlenir?
- Content Security Policy (CSP) nedir ve nasıl yapılandırılır?
- OWASP Top 10 nedir? En önemli maddelerini özetleyin.
Bu konuda başka bir soru biliyor musun?
Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.