[php] Meest veilige file upload

Pagina: 1
Acties:

  • TangLeFuzZ
  • Registratie: Juni 2001
  • Laatst online: 23-08 15:45
Hey,

ik moet een superveilig file upload systeempje maken, en ik vroeg me af wat veiliger was, via het 'normale' file upload systeem van PHP, of met cURL..

Voorbeeldje van cURL:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?
  if (isset($sampfile))
  {
     $ch = curl_init($APP);  
     curl_setopt($ch, CURLOPT_POSTFIELDS, array
('sampfile'=>"@$sampfile"));
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
     $postResult = curl_exec($ch);
     curl_close($ch);
     print "$postResult";
  }
  else
  {
     print   "<form enctype=\"multipart/form-data\" "
                . "action=\"$PHP_SELF\" method=\"post\" >\n";

     print "</form>";
}
?>

De server ondersteunt al cURL, dus als het met cURL veiliger is werk ik liever daar mee...

  • _cyclops_
  • Registratie: Mei 2000
  • Laatst online: 07-03-2025
Veilig zal 't denk ik nooit zijn omdat andere users op de webserver natuurlijk ook zo'n script kunnen draaien en dan alsnog de files uitlezen en misschien wel kunnen overwriten omdat de owner van de file de 'webserver' is lijkt me?

Eigenlijk zou je voor dit in de code van die cURL lib moeten kijken om te weten of het veilig is....

  • TangLeFuzZ
  • Registratie: Juni 2001
  • Laatst online: 23-08 15:45
Ok doe ik...maar dat andere gaat niet op, want we hebben een eigen server...

  • TheDane
  • Registratie: Oktober 2000
  • Laatst online: 17:06

TheDane

1.618

wat is precies de reden dat 't veilig moet zijn ?
en op wat voor manier 'veilig' ?

veilig als in 'foutloos' ? of 'veilig' als in 'andere mensen geen toegang geven tot geuploade files ?

bij geval 1 zou je de geuploade file nog kunnen vergelijken met de remote file ofzo

en wat betreft die toegang ...uhhh

[hersenspinsel]
rename de file naar een of andere hash die alleen toegankelijk is voor mensen die op 1 of andere manier ingelogd zijn, en waarvoor een dergelijke hash te maken is
(zet username in hash, en kijk of username in je database voorkomt oid)
[/hersenspinsel]

  • TangLeFuzZ
  • Registratie: Juni 2001
  • Laatst online: 23-08 15:45
Op donderdag 03 januari 2002 13:42 schreef TheDane het volgende:
wat is precies de reden dat 't veilig moet zijn ?
en op wat voor manier 'veilig' ?

veilig als in 'foutloos' ? of 'veilig' als in 'andere mensen geen toegang geven tot geuploade files ?
Veilig als in 'foutloos', dus zonder exploits e.d., het is namelijk de bedoeling dat leden bestanden gaan uploaden, en ik weet dat als zoiets mogelijk is het soms ook erg makkelijk is om op zo'n server 'in te breken'.

  • eamelink
  • Registratie: Juni 2001
  • Niet online

eamelink

Droptikkels

Ja, dus eigenlijk veilig in de zin van secure ;)

  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

let op de extensies die ze mogen uploaden, neem aan dat je niet wilt dat ze bepaalde types MOGEN uploaden :P .. denk aan .php / .php3 / .pl e.d. :)

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


  • TangLeFuzZ
  • Registratie: Juni 2001
  • Laatst online: 23-08 15:45
Op vrijdag 04 januari 2002 10:54 schreef dusty het volgende:
let op de extensies die ze mogen uploaden, neem aan dat je niet wilt dat ze bepaalde types MOGEN uploaden :P .. denk aan .php / .php3 / .pl e.d. :)
Ok, zo'n check erachter gooien is niet zo moeilijk, maar is zo'n check dan niet te 'kraken'?

Voorbeeld van een check die ik zou gebruiken:
PHP:
1
2
3
4
5
<?
if (strrchr($bestandsnaam,'.')!=".gif" and strrchr($bestandsnaam,'.')!=".jpg") {
  mijnErrorFunctie();
}
?>

  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

Op vrijdag 04 januari 2002 12:54 schreef Tangletje het volgende:
Ok, zo'n check erachter gooien is niet zo moeilijk, maar is zo'n check dan niet te 'kraken'?
Ze kunnen hun .php pagina als .pap uploaden, echter neem ik aan dat de webserver niet .pap als php code zal gaan uitvoeren :+

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


Verwijderd

Op vrijdag 04 januari 2002 12:58 schreef dusty het volgende:

[..]

Ze kunnen hun .php pagina als .pap uploaden, echter neem ik aan dat de webserver niet .pap als php code zal gaan uitvoeren :+
dan staat er in je access.log van apache

*.*.*.* - - [23/Dec/2000:16:07:55 +0100] "GET /koude.pap HTTP/1.1" 200 0

:P

  • TangLeFuzZ
  • Registratie: Juni 2001
  • Laatst online: 23-08 15:45
Op vrijdag 04 januari 2002 12:58 schreef dusty het volgende:

[..]

Ze kunnen hun .php pagina als .pap uploaden, echter neem ik aan dat de webserver niet .pap als php code zal gaan uitvoeren :+
Oja natuurlijk...dan is zo'n check wel veilig genoeg ja...tenminste ;)

  • TangLeFuzZ
  • Registratie: Juni 2001
  • Laatst online: 23-08 15:45
Ok, ik heb nu het volgende gemaakt, zouden jullie het nog eens door kunnen lopen?

bvd...
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<?
if (trim($user_icon_name)!="") {

  // icon info
  $extensie = explode(".",$user_icon_name);
  $extensie = ".$extensie[1]";
  $grootte = filesize($user_icon);
  $image_Array = GetImageSize($user_icon);
  $hoogte = $image_Array[0];
  $breedte = $image_Array[1];
  
if ($hoogte>60 || $breedte>60) {
  $errormsg = "Je usericon mag maximaal 60 pixels breed zijn en 60 pixels hoog.";
} else {
  
if ($grootte>25000) {
  $errormsg = "Je usericon is te groot, hij mag maximaal 25 KB zijn.";
} else {

  if ($extensie==".gif" || $extensie==".jpg") {
    if ($user_icon_name!="") {
      @copy("$user_icon", "usericons/$jarf$extensie") or die("Usericon niet geupload."); 
    } else {
      $errormsg = "Het icoon bestaat niet.";    
    }
  } else {
    $errormsg = "Je usericon moet van het type GIF of JPG zijn.";    
  }
}
}
}
?>

  • TangLeFuzZ
  • Registratie: Juni 2001
  • Laatst online: 23-08 15:45
aub?

  • kvdveer
  • Registratie: November 2000
  • Laatst online: 06-11-2025

kvdveer

Z.O.Z.

Ik zou denk ik een foutmelding krijgen zodra ik dit bestand zou willen uploaden:

hallo.dag.jpg

Verder zie ik geen exploits, al snap ik niet waar je $jarf vandaan haalt.

Localhost, sweet localhost


  • TangLeFuzZ
  • Registratie: Juni 2001
  • Laatst online: 23-08 15:45
Op zaterdag 05 januari 2002 11:38 schreef kvdveer het volgende:
Ik zou denk ik een foutmelding krijgen zodra ik dit bestand zou willen uploaden:

hallo.dag.jpg

Verder zie ik geen exploits, al snap ik niet waar je $jarf vandaan haalt.
thnx...$jarf moet je ook niet op letten...
En ja, je zult dan een probleem krijgen, ik zal dat ff fixen ....zag laatst nog wat op php.net

Verwijderd

$extension = explode(".",$naam);
$extension = $extension[count($extension)-1];

  • WouZz
  • Registratie: Mei 2000
  • Niet online

WouZz

Elvis is alive!

Waarom controleer je niet met GetImageSize() of het een geldig image bestand is? Dan hoef je niet op extensie te controleren en weet je meteen dat het ook daadwerkelijk een afbeelding is en niet een of ander vaag (onveilig??) bestand met een .gif extensie...

Manual:
If accessing the filename image is impossible, or if it isn't a valid picture, getimagesize() will return NULL and generate a warning.

On track


  • RedHat
  • Registratie: Augustus 2000
  • Laatst online: 13-09 21:26
connecten met een accountje (username/password) die bepaalde restricties heeft :?

  • TangLeFuzZ
  • Registratie: Juni 2001
  • Laatst online: 23-08 15:45
Op zaterdag 05 januari 2002 21:36 schreef WouZz het volgende:
Waarom controleer je niet met GetImageSize() of het een geldig image bestand is? Dan hoef je niet op extensie te controleren en weet je meteen dat het ook daadwerkelijk een afbeelding is en niet een of ander vaag (onveilig??) bestand met een .gif extensie...

Manual:
[..]
Hey thnx, helemaal niet aan gedacht...
Maar dat is zowiezo niet te omzeilen?
Ach, als ik ze alle 2 erin bouw is het nog veiliger niet? ;)
Pagina: 1