Kullanıcıdan gelen PNG dosyaları yine de sınır ve güvenli decode gerektirir. Dosya boyutu tek başına açılmış görüntünün bellek maliyetini veya parser riskini anlatmaz.
Sıkıştırılmış byte, decode boyutu değildir
Görece küçük dosya çok büyük ölçüler ilan edebilir. Decode edildiğinde raster; genişlik × yükseklik × kanal × örnek başına byte kadar ve ek çalışma belleği gerektirebilir. Körlemesine allocation yapmadan önce ölçüleri doğrulayın.
Uzantıya değil parser'a güvenin
Dosyanın adını .png yapmak onu PNG yapmaz. Güncel tutulan görüntü kütüphanesiyle formatı doğrulayın ve bozuk girdiyi reddedin. İstemcinin gönderdiği MIME header kanıt değil ipucudur.
Kaynak sınırları koyun
Dosya byte'ı, piksel ölçüleri, toplam piksel sayısı, decode süresi, animasyonda frame sayısı ve sonraki transform işini sınırlandırın. Limitler ürünün gerçekten ihtiyaç duyduğu değerlere göre belirlenmelidir.
Metadata büyük veya beklenmedik olabilir
PNG genişletilebilir ve ancillary chunk taşıyabilir. Yalnız piksel bekleyen pipeline hangi metadata'yı koruyacağını belirlemeli; sınırsız ek verinin istemeden depolama kanalına dönüşmesine izin vermemelidir.
Yeniden encode yararlıdır ama sihirli değildir
Güvenilir kütüphaneyle decode edip yeniden encode etmek birçok upload'u normalize edip istenmeyen metadata'yı kaldırabilir; ancak decoder yine saldırgan kontrollü byte'ları işler. Kütüphaneleri güncel tutun ve pahalı işlemleri gerektiğinde izole edin.
İş nesnesini de doğrulayın
Geçerli PNG yine de ürün için yanlış görüntü olabilir: yanlış ölçü, aspect ratio, şeffaflık politikası, animasyon veya içerik. Dosya formatı doğrulaması upload güvenliğinin yalnız bir katmanıdır.
Kaynaklar ve teknik dayanak
Temel teknik kaynak: W3C Portable Network Graphics (PNG) Specification, Third Edition (2025). Web teslimiyle ilgili bölümlerde uygun yerlerde MDN responsive image dokümantasyonu da esas alınmıştır.
