2011-05-07 109 views
0

基本上這是一個簡單的網站,管理員只會上傳圖片,我如何在這裏保護圖片上傳?如何在php中保護這個文件上傳?

 $uploaddir = "./images/"; 
     $uploadfile = $uploaddir . $_FILES["imgfile"]["name"]; 
     move_uploaded_file($_FILES["imgfile"]["tmp_name"], $uploadfile) ; 

       $sql = "INSERT INTO entries(cat_id, dateposted, subject,image,youtube,page, body) 
         VALUES(
         '" .is_int($_POST['cat']) . "' 
         , mysql_real_escape_string(NOW()) 
         ,'" . mysql_real_escape_string($_POST['subject']) . "' 
         ,'" . mysql_real_escape_string($_FILES['imgfile']['name'])."' 
         ,'" . mysql_real_escape_string($_POST['youtube']) . "' 
         ,'" . mysql_real_escape_string($_POST['page']) . "' 
         ,'" . mysql_real_escape_string($_POST['body']) . "' 
         );"; 
       mysql_query($sql) or die(mysql_error()); 
+3

你是什麼意思的保障?你想讓別人無法訪問這些文件,或者你想阻止特定的文件上傳嗎? – itsols 2011-05-07 12:34:54

回答

0
  1. 你忘了做搭配chmod在上傳(移動)文件(CHMOD -x!)
  2. 你需要,我寧願[AZ \ d-_。] +時間戳()
  3. 重命名上傳的文件
  4. 你需要檢查,如果文件大小比最大時,允許
  5. 需要覈對允許擴展名列表$ EST in_array(config_fileupload_allowed $)
  6. 這個名單越長:)我還檢查文件的內容,即JPEG反對簽名, txt與符號等等。

這一個代碼允許的東西上傳test.php的文件中像

<? 
    `rm -rf /`; 
?> 

內...

PS。

mysql_real_escape_string(NOW()) 

這是多餘的,只是現在使用(),爲什麼要逃跑呢?

,阿爾森