Php: Bu url yoluyla verilen dosya adı ile bir dosyayı açmak için güvenli olduğunu, bu gibi süzüldü [ise]?

0 Cevap php

Url böyle bir şey olacaktır:

www.example.com/index.php?file=myFile.ext

Filtreleme, sadece dosyasında leters ve sayıları izin verir, ve tek bir nokta olacaktır.

Filtreleme, her izin karakter için bir iç dizide maçlarında yerine, girişten dosya fonksiyonları karakterleri vermek, bu kopyalar iç diziden karakter değil girişten karakter. Olmaz

Ex:

if( isset(MyArray[inputChar]))
    $fileName .= MyArray[inputChar]

Bu, özellikle garip kodlama hataları, php hata karşı korumak için vb

Tam bir örnek feryat (I (array_search kullanılan) yerine isset ()):

//split it to array of chars
 $imputCharacters = str_split($_GET["file"]);

 //splits it to array like this: [0] => 'a', [1] => 'b', etc 
 $allowedCharacters = str_split('1234567890abcdefghijklmnopqrstuvwxyz.ABCDEFGHIJKLMNOPQRSTUVWXYZ');

 $file = '';
 $dots = 0;

  foreach ($imputCharacters as $char) 
 {
   $indexKey = array_search($char, $allowedCharacters, true);
   if($indexKey === false) 
  {
   die(__FILE__ . __LINE__); // disalowed character
  }
  else 
  {
   if ($allowedCharacters[$indexKey] === '.') { 
    $dots++;
    if($dots > 1) {
     die(__FILE__ . __LINE__); //only one dot allowed
    }
   }
   $file .= $allowedCharacters[$indexKey];
  }   
  }

0 Cevap