Daha öncede bu konuda bazı önerilerde bulunmuştum. finfo fonksiyonunun biraz daha güvenliği olduğunu öne sürmüştüm.

Fakat bu fonksiyonunda manipuleye çok açık olduğunu farkettim.

Şimdi bir resim upload işleminin güvenliğini sağlamak için yapacaklarımıza bakalım.

<?php


// file extension ( Dosya uzantı kontrolü - En Kötüsü )

$mime = end(explode('.','test.gif')); // VALID GIF

print_r($mime); // .gif

// getimagesize ( Dosyanın resim çıktısını almak - Kötünün iyisi )

$mime = getimagesize('test.gif')['mime']; // VALID GIF

print_r($mime); // image/gif

// FINFO ( Dosyanın mime yani dosya türünü almak - Biraz daha iyi )

$finfo = finfo_open(FILEINFO_MIME_TYPE);
$mime = finfo_file($finfo, 'test.gif'); // VALID GIF

print_r($mime); // image/gif

?>
Ama yukarıdaki seçeneklerin tamamı manipuleye açık.

GIF89
<?php
Örnek bu dosyada image/gif olarak dönecektir.

Peki bunu biraz daha zorlarsak ne yapabiliriz ? Dosyanın içeriği üzerinden ilgili dosya türüne göre bir resim oluşturmayı deneyebiliriz bellekte.

<?php

$im = @imagecreatefromgif(file_get_contents('test.gif'));

if($im)
{
	echo 'Resim başarıyla oluşturuldu!';
}
else
{
	echo 'Resim oluşturma başarısız oldu!';
}

?>

Hadi resimleri bu şekilde hallettik ama diğer dosyalarda ne yapacağız ? PHP nin bu konuda doğrulama sisteminin oldukça zayıf olduğunu söylemeliyim. ( Araştırmalarım bunu gösteriyor )

Bu konuda bir beyin fırtınası yapalım dedim önerisi olan arkadaşlar yazabilirmi ?