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 ?