[ Wapx.WS @ 28.01.2011. 11:52 ] @
Zanima me kako mogu da zastitim php uploader od shellova i slicnih stvarcica?
Za sada koristim
Code:

if (!eregi("\.(mid|gif|bmp|mid|midi|3gp|mp3|wav|mpn|nth|mpc|jar|jad|jpeg|jpg|sis|mmf|amr|thm|png|wbmp)$",$file)) {
        echo "Unsupported extension!";
        exit();
    }

u samom fajlu za proveru
Code:

RemoveType .pl .cgi .php .gif .php .jpg .php .png.php .php3 .php4 .php5 .xml .phtml .phtm .html .htm .wml .shtm .shtml
RemoveHandler .pl .cgi .php .gif .php .jpg .php .png .php .php3 .php4 .php5 .xml .phtml .phtm .html .htm .wml .shtm .shtml  

htaccess u folderu gde se fajlovi nalaze, da sprecim njihovo izvrsavanje ako se kojim cudom i nadju u folderu
Da napomenem da svaki fajl preimenujem random stringom i cuvam sa njegovom ekstenzijom.
Znaci zanima me da li postoji jos neki nacin da se probije ova zastita?
Hvala.
[ mitke013 @ 28.01.2011. 17:45 ] @
Citat:
Wapx.WS: Zanima me kako mogu da zastitim php uploader od shellova i slicnih stvarcica?
Za sada koristim
Code:

if (!eregi("\.(mid|gif|bmp|mid|midi|3gp|mp3|wav|mpn|nth|mpc|jar|jad|jpeg|jpg|sis|mmf|amr|thm|png|wbmp)$",$file)) {
echo "Unsupported extension!";
exit();
}



Provera fajla po ektenziji nije dovoljna zastita. Kakvu vrstu fajlova ocekujes?

Ja kao helper koristim [url=mailto:http://getid3.sourceforge.net/]getId3[/url] paket za validaciju fajlova. I jako ga je lako koristiti:
Code (php):

          /**
          * Prevalidation of object; will check if this is actually a valid song type and if it is, fill 'mime' column
          * This validation for mime will happen only upon inserting the object
          * There is no need for later to check mime again, file will not be changed
          */

          public function preInsert(Doctrine_Event $event)
          {
               $errorStack = $this->getErrorStack() ;
               $results = $this->getId3Results() ;
               if ( !isset($results['fileformat']) OR ( $results['fileformat']!='mp3' ) )
                    $errorStack->add('mime', 'Not a valid song') ;
               else {
                    $this->mime = $results['mime_type'] ;
                    $this->filename = $this->createNewFilename() ;
                    $this->length = $results['playtime_string'] ;
               }
               parent::preInsert($event) ;
          }

          /**
          * Analyze file
          *
          * @return mixed
          */

          public function getId3Results()
          {          
               $getid3 = new getID3();
               $getid3->encoding = 'UTF-8';
               $fileInfo = $getid3->Analyze($this->getFilePath());
               return $fileInfo ;  
          }
 
[ Wapx.WS @ 29.01.2011. 17:05 ] @
Ocekujem sve ove fajlove koji su nabrojani u eregi. Dakle mid|gif|bmp|mid|midi|3gp|mp3|wav|mpn|nth|mpc|jar|jad|jpeg|jpg|sis|mmf|amr|thm|png|wbmp i mozda jos par njih.
E sad zanima me da li je dovoljno da proveravam mime type preko $_FILES['uploaded_file']['type']?
I jos jedno pitanje. Kako mogu da "nateram" .htaccess da se odnosi na sve podfoldere ali ne i na sam folder gde se nalazi? Da li je to moguce? Hvala.
[ mitke013 @ 29.01.2011. 18:13 ] @
Citat:
Wapx.WS: Ocekujem sve ove fajlove koji su nabrojani u eregi. Dakle mid|gif|bmp|mid|midi|3gp|mp3|wav|mpn|nth|mpc|jar|jad|jpeg|jpg|sis|mmf|amr|thm|png|wbmp i mozda jos par njih.
E sad zanima me da li je dovoljno da proveravam mime type preko $_FILES['uploaded_file']['type']?

Ne, zato sam ti i rekao da koristis server-side validaciju. 'Type' se moze izmeniti sa client-side.

[ Wapx.WS @ 30.01.2011. 12:41 ] @
Ok, a da li je provera bitrate u redu za mp3 fajlove?
Znaci
Code:

if(isset($bitrate) and is_numeric($bitrate)) {
echo "File je mp3";
}
else {
echo "File nije mp3";
}

Naravno uz proveru ekstenzije.
Sta je u stvari ono sto imaju validni fajlovi a ovi ostali ne?

Hvala.