PHPUpload
Skrevet af d. 6/12-2017 13:08

Generelt

Husk at når du giver en bruger mulighed for at uploade til dit webhotel, kan han uploade kode der giver ham de samme muligheder du som administrator har hvis han kan browse filen bagefter. Det anbefales derfor på det kraftigste at du kun giver mulighed for at uploade til /db folderen, da den ikke er synlig via internettet.

Skal du uploade til en folder der umiddelbart kan browses via internettet, er det derfor vigtigt at du checker på endelsen og f.eks. kun tillader filer der ender på .jpg eller .gif. En bedre løsning er at lade brugere uploade til /db folderen, og derefter bruge programmeringskode til at flytte filen hen et sted hvor den må ligge, samtidig med at du checker endelsen.

Windows

På windows er php file upload slået til som standard, dog kan man kun uploade til /db mappen. Ønsker man at kunne uploade til andre placeringer skal man angive pathen til support afdelingen, se kontakt siden. Unix brugere skal læse videre, se nedenfor.

Unix

PHP file upload er som standard slået fra på de nyeste unixwebservere, f.eks. Hanne og Gudrun. Det skyldes bl.a. problemer med rettigheder af filer uploadet med file upload, og du skal kontakte os via kontaktformularen hvis du vil have det slået til.

PHP fileupload er desuden slået fra som standard da det skal omgås med varsomhed og en vis dygtighed. En ondskabsfuld bruger kan muligvis uploade et script til at kigge i bl.a. din source kode, der f.eks. kan indeholdende MySQL kodeord og andet privat information. Forvent det værste af dine brugere, og husk altid som minimum at checke at den uploadede fil ikke er et script, dvs. ender på pl/cgi/py/php eller php3. Det er der desværre _ikke_ taget højde for i nedenstående script.

Har man adgang til php fileupload skal være opmærksom på bl.a. følgende:

  • Biblioteket /ftpbrugernavn/phpupload/ skal eksistere i ens ftpbibliotek, og have rettighederne 777.
  • Det bibliotek som man kopierer/flytter den uploadede fil til skal være 777, dvs biblioteket "moveuploadsto" i eksemplet nedenfor.
  • Man kan sætte umask(000) så den uploadede fil bliver 777. Husk at tallet i umask kan opfattes som om det trækkes fra 777 og resultat er den værdi som filen får. Dvs umask(011) giver en uploadet fil værdien 766.
  • VIGTIGT: ejeren af den uploadede fil vil være webserver brugeren og derfor kan man _ikke_ åbne den uploadede fil gennem et andet PHP script, heller ikke selvom filen er 777. Åbning af filen tillades ikke da man ikke selv "ejer" den uploadede fil. Der er pt _ingen_ løsning på dette problem.
  • Ejerskabet af filer uploadet gennem PHP bliver sat korrekt i løbet af natten. Derved bliver dit diskforbrug på serveren også korrekt i løbet af natten. Der er pt ingen måde at se hvor meget plads man bruger på serveren, se evt unix supporten.

Simpelt eksempel

Lidt kode eksempel, tilpas til dit eget site:

<html><body>

<?
if (is_uploaded_file($HTTP_POST_FILES['userfile']['tmp_name']))
{
  umask(033);
  copy($HTTP_POST_FILES['userfile']['tmp_name'], "path/".$HTTP_POST_FILES['userfile']['name']);
  // Bemærk / efter path navnet. Den skal med.
  // Windows brugere, erstat "path" med "d:\\home\\FTPBrugernavn\\db\\"
}
else
{
  echo "Possible file upload attack: filename ", $HTTP_POST_FILES['userfile']['name'];
}
?>

<FORM ENCTYPE="multipart/form-data" ACTION="upload.php" METHOD="POST">
<INPUT TYPE="hidden" name="MAX_FILE_SIZE" value="2000000">
Send this file: <INPUT NAME="userfile" TYPE="file">
<INPUT TYPE="submit" VALUE="Upload">
</FORM>
     
</body></html>

Læs mere på php.net.

(0 stemmer)
Denne artikel var til hjælp
Denne artikel var ikke til hjælp

Kommentarer (0)
Opret kommentar
 
 
Navn:
Email:
Kommentarer:
CAPTCHA Verificering 
 
Indtast teksten du ser på billedet i feltet herunder (CAPTCHA). Dette er påkrævet for at undgå automatiske registreringer og form afsendelser.

Referencer |  Om Azero |  Betingelser |  Job |  Presse |  Kontakt Azero

Azero A/S - CVR 28 10 17 59 - Skjørringvej 8 - 8464 Galten - Telefon 38 19 50 17
Danske Bank - Reg 4180 - Konto 0010092027 - SWIFT DABADKKK - IBAN DK7230000010092027

Copyright © 2000-2020. Azero A/S respekterer alle varemærker.
Priser er angivet eksklusive moms i DKK, der tages forbehold for trykfejl. Alt salg sker i henhold til vores betingelser.
1. Domaincheck - 2. Search - 3. NScheck - 4. NSlookup - 5. Lookup - 6. TraceRoute - 7. Query - 8. CheckWeb - (9. Flere)