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ıyorsa content-length-range koş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.com gibi 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");
}
  1. CORS nedir? Neden CORS hatası alırız?OrtaWeb GüvenliğiFull Stack
  2. XSS ve CSRF saldırıları nedir, nasıl korunulur?ZorWeb GüvenliğiFull Stack
  3. Authentication ile authorization arasındaki fark nedir?KolayWeb GüvenliğiFull Stack
  4. Güvenli cookie ayarları nelerdir? Session hijacking nasıl önlenir?OrtaWeb GüvenliğiFull Stack
  5. Content Security Policy (CSP) nedir ve nasıl yapılandırılır?ZorWeb GüvenliğiFull Stack
  6. OWASP Top 10 nedir? En önemli maddelerini özetleyin.OrtaWeb GüvenliğiFull Stack

Bu konuda başka bir soru biliyor musun?

Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.

Soru ekle