• 23-10-2013, 18:19:34
    #1
    Arkadaşlar elimde bir dosya yükleme sistemi mevcut ben bunu natro'da bulunan hostingimde kullanıyorum.

    Ancak farklı bir hostta hata veriyor

    Hata;

    Alıntı
    Warning: move_uploaded_file(yonetim/uploads/2013-10/1b218bf3bbfcbbb5.png) [function.move-uploaded-file]: failed to open stream: Permission denied in D:\Home\xxx.com.tr\httpdocs\upload.php on line 56

    Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move 'C:\Windows\Temp\phpE119.tmp' to 'yonetim/uploads/2013-10/1b218bf3bbfcbbb5.png' in D:\Home\xxx.com.tr\httpdocs\upload.php on line 56
    Dosya başarıyla yüklendi
    Dosya yüklendi demesine rağmen ilgili dizine resmi atmıyor host adminine belirttim olayı Belirttiginiz upload secenegi bir guvenlik acigidir. yazmış hataya bakacak olursak araştırdım birtakım fonsiyonların sunucuda kapalı olmasındanmış ne yapabilirim ?


    Resim upload sitemim

    <div class="uploadc">
    	<div class="uploadcform">
    <form name="upload" action="upload.php" enctype="multipart/form-data" method="post">
    	<p class="uploadcbaslik">Desteklenen Dosya Biçimi .jpg, .png</p>
    	<input class="gonder" type="file" name="dosya" /></br></br>
        <input class="uploadcbuton" type="submit" value="Gönder" /></br>
    </form>
    		
    <?php
    
    	if($_GET[req] == "delete")
    	{
    		$sorgu = mysql_query("SELECT * FROM  dosyaupload WHERE id='$_GET[id]'");
    		$goster = mysql_fetch_array($sorgu);
    		
    		unlink($goster[url]);
    		mysql_query("DELETE FROM dosyaupload WHERE id='$_GET[id]'");
    	}
    	
    	$buay = date("Y-m");
    	$konum = "yonetim/uploads/";
    	
    	if(!is_dir($konum.$buay)){
    		mkdir($konum.$buay);
    		chmod($konum.$buay, 0777);
    	}
    
    	$gecerli = array("jpg","png");
    	$uzanti	= end(explode(".", $_FILES["dosya"]["name"]));
    
    	if($_FILES["dosya"]["name"]){
    		if($_FILES["dosya"]["size"] < 1000000){
    			if(in_array($uzanti, $gecerli)){
    				if($_FILES["dosya"]["error"] > 0){
    					$mesaj = $_FILES["dosya"]["error"];
    				}else{
    					
    					$yeni = substr(md5(microtime()),0,16);
    					move_uploaded_file($_FILES["dosya"]["tmp_name"], $konum.$buay."/".$yeni.".".$uzanti);
    					
    					$isim = $_FILES["dosya"]["name"];
    					$url = $konum.$buay."/".$yeni.".".$uzanti;
    					mysql_query("INSERT INTO dosyaupload (isim, url, aciklama, link) VALUES ('$isim', '$url', '$_POST[aciklama]', '$_POST[link]')") or die("Hata : ".mysql_error());
    					
    					echo "<span style='color: #4d4d4d; font-weight: bold'>Dosya başarıyla yüklendi</span></br></br>";
    					echo "<center><b>Link (Altta verilen linki kopyalayın ve ilgili alana yapıştırın.)</b><br> <label>http://".$_SERVER['HTTP_HOST']."/$konum$buay/$yeni.$uzanti</label></center>";
    				}
    			}else{
    				echo "<span style='color: #4d4d4d; font-weight: bold'>Geçersiz dosya! Lütfen belirtilen dosya türü yükleyin.</span>";
    			}
    		}else{
    			echo "<span style='color: #4d4d4d; font-weight: bold'>Dosya boyutu fazla büyük!</span>";
    		}
    	}
    
    
    ?>
    
    	</div>
    </div>
  • 23-10-2013, 18:23:54
    #2
    Üyeliği durduruldu
    php.ini den fonksiyon kapatılmıştır hosting yetkiliniz ile görüşün..
  • 23-10-2013, 18:26:26
    #3
    Yani ben bunu natroda kullanıyorum orada güvenlik açığı oluşuyor olsa oradada kullanamam ?

    --R10.NET; Flood Engellendi -->-> Yeni yazılan mesaj 18:26:26 -->-> Daha önceki mesaj 18:24:49 --

    MertErtem adlı üyeden alıntı: mesajı görüntüle
    php.ini den fonksiyon kapatılmıştır hosting yetkiliniz ile görüşün..
    Görüştüm
    Belirttiginiz upload secenegi bir guvenlik acigidir.
    Cevabını aldım
    Acaba güvenli açığı etkilemeyecek daha başka nasıl dosya yükleyebiliriz
  • 23-10-2013, 21:20:24
    #4
    Üyeliği durduruldu
    Fonksiyon kapalı olsa yazar warning de, tek sorun klasörde yazma izninin olmaması, ek olarak çok isterseniz /yonetim/... diye relative path vermektense absolute path verebilirsiniz, güvenlik için de sadece belli dosya türlerine izin vermeniz lazım, fileinfo yu kullanıp dosya türlerini rahat rahat alıp izin ver / verme olayına girebilirsiniz,

    Not: fileinfo php5.3 den sonra php içinde gelmeye başladı onu da bildireyim önceden