Bildiğimiz üzere son kullanıcıya sitemize görsel yükleme iznini vermek her zaman problemdir. JPG, PNG gibi statik görseller için basit PHP komutları var tabii; yüklenin görseli resize edersiniz, içeride injection varsa bile bozar. Ya da resize komutu hata basar vs. vs. Ama en önemli nokta her zaman dinamik görsellerdir. Örneğin GIF. PHP'nin default extension takımı GIF'i süzmekte her zaman problem yaşar. İçine hack kod gömülmesi en kolay dosya tipidir.

Tabii burada GIF'i dinamik tutmaktan bahsediyorum, yoksa animasyonunu bozup pek ala saklarsınız güvenlice. Bunu yapan imagick gibi PHP extension'ları var ama bazen toplu satışı yapılan projelerde bazı hosting'ler buna sahip olmaz, kurmaz ve müşterilerimiz problemler yaşarlar.

MimeType kontrol, size kontrolü, width, height kontrolü bunların hepsi bypass'lanabilir şeyler. Gerçekten güvenli bir yükleme işlemi için geniş bir class yazmamız gerekiyor ki bu hususta yazılmış github projelerini inceledim; pek çoğu bir güvenlik garantisi veremiyor.

Aklıma ne geldi:

Biz niye uğraşalım? Imgur, ImgBB gibi back end'de 10 binlerce satır görsel güvenliği olan siteler ve bu sitelerin bize sundukları API'ler var.
En güvenli yol olarak düşüncem; son kullanıcıdan gelen görseli bu sitelerin API'lerine yönlendirip; eğer dosya başarıyla yüklendiyse (yani dosya valid bir görsel ise) dönüş olarak verdiği görsel URL'sini alıp; bu URL'yi sitemize curl ya da fopen ile kayıt etmek.


Sizce de bu tarz durumlarda çok harika bir yöntem değil mi?