PHP ile güvenli resim yüklemek için en önemli noktalardan bir tanesi, sunucumuza gönderdiğimiz dosyanın ismini şifrelemektir. Bu şifreleme sizin dosyanızın yolunu rastgele atayacak ve olası SHELL saldırılarına karşı bir nebzede olsa engel olacaktır.Şimdi sizelere URL linkinden ve $_FILE ile iki türlü bu işlemi örneklendireceğim.
1. PHP ile URL’den güvenli resim yükleme (Upload) işlemi:
/* * Author: Bercan Özcan * GitHUB: github.com/bercanozcan * Twitter: twitter.com/bercanozcan * */ <?php $url = "http://www.bercanozcan.com/wp-content/uploads/2015/04/logo.png"; // URL linkimizi değişkene atadık. $type=substr($url,-4); // URL'nin son 4 harfini alırsak, bu uzantımız olmuş oluyor. if($type == ".png" || $type == ".jpg" || $type == ".gif"){ //uzantı kontrolü yaparak koşulumuzu belirttik. $uret = array("b1t","b2t","b3t","b4t","b5t","b6t","b7t","b8t","b9t","b0t"); // Dizi oluşturduk, kendinize göre belirleyebilirsiniz. $dosyaadi = $uret[rand(0,9)].rand(10000,9999999).$type; // Oluşturduğumuz diziden rastgele seçim yaptırdık, sonrasında rand() fonksiyonu ile rastgele sayıdan oluşan bir dosya ismi seçtirdik ve en sonuna uzantisi ekledik. $dir = "upload/".$dosyaadi; // Dosyamızın kayıt edileceği yeri belirledik. touch($dir); // Belirlediğimiz yere dosyayı olutruduk. $kaynak = file_get_contents($url); // Dosyamınızn resimin kaynağını aldık. $insert = file_put_contents($dir,$kaynak); // Oluşturduğumuz dosyanın içine dosyayı yazdık. if($insert){ //Eğer yazma başarılı ise echo "Resim kaydedildi."; //başarılı yaz }else{ //Yazma başarılı değil ise echo "Dosya kaydedilmedi"; unlink($dir); //Dosyayı sildik. } }
Bir yanıt yazın