SORU
12 Kasım 2010, Cuma


Yükleme güvenlik kontrol listesi PHP resim

Benim uygulama için resim yüklemek için bir komut dosyası programlıyorum. Aşağıdaki güvenlik adımları uygulama script taraftan güvenli yapmak için yeterli mi?

  • Devre dışı bırakmak upload klasörünün içinde çalışmasını kullanarak PHP .httaccess.
  • Eğer dosya adı dizesini içeriyorsa, yüklemek izin vermez"". php
  • İzin sadece uzantıları: jpg,jpeg,gif ve png.
  • Sadece resim dosya türüne izin ver.
  • İki dosya türü ile görüntü vermemek.
  • Görüntü adını değiştirin.
  • Alt-dizin yükleme dizini değil, kök.

Bu benim senaryom:

 $filename=$_FILES['my_files']['name'];
 $filetype=$_FILES['my_files']['type'];
 $filename = strtolower($filename);
 $filetype = strtolower($filetype);

 //check if contain php and kill it 
 $pos = strpos($filename,'php');
 if(!($pos === false)) {
  die('error');
 }




 //get the file ext

 $file_ext = strrchr($filename, '.');


 //check if its allowed or not
 $whitelist = array(".jpg",".jpeg",".gif",".png"); 
 if (!(in_array($file_ext, $whitelist))) {
    die('not allowed extension,please upload images only');
 }


 //check upload type
 $pos = strpos($filetype,'image');
 if($pos === false) {
  die('error 1');
 }
 $imageinfo = getimagesize($_FILES['my_files']['tmp_name']);
 if($imageinfo['mime'] != 'image/gif' && $imageinfo['mime'] != 'image/jpeg'&& $imageinfo['mime']      != 'image/jpg'&& $imageinfo['mime'] != 'image/png') {
   die('error 2');
 }
//check double file type (image with comment)
if(substr_count($filetype, '/')>1){
die('error 3')
}

 // upload to upload direcory 
 $uploaddir = 'upload/'.date("Y-m-d").'/' ;

if (file_exists($uploaddir)) {  
} else {  
    mkdir( $uploaddir, 0777);  
}  
  //change the image name
 $uploadfile = $uploaddir . md5(basename($_FILES['my_files']['name'])).$file_ext;



  if (move_uploaded_file($_FILES['my_files']['tmp_name'], $uploadfile)) {
 echo "<img id=\"upload_id\" src=\"".$uploadfile."\"><br />";
  } else {
   echo "error";
  }

Yeni ipuçları hoş geldin :)

CEVAP
12 Kasım 2010, Cuma


Re-process görüntü GD (veya Resim) kullanılarak işlenmiş resim kaydedin. Tüm Diğerleri sadeceeğlencelihackerlar için sıkıcı.

Edit: Ve rr belirttiği gibi, herhangi bir yükleme için move_uploaded_file() kullanın.

Geç Edit: bu arada, upload klasörü hakkında çok kısıtlayıcı olmak istersin. Bu yerlerde birçok açıkları ortaya çıktığı karanlık köşelerinden biri. Bu yüklemek ve herhangi bir programlama dili herhangi bir türü için geçerli/sunucu. https://www.owasp.org/index.php/Unrestricted_File_Upload kontrol edin

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • LearnKey

    LearnKey

    19 AĞUSTOS 2008
  • oHeymarvin

    oHeymarvin

    11 Temmuz 2013
  • Xcode programming tutorials

    Xcode progra

    17 EYLÜL 2006