PDA

Bekijk Volledige Versie : [PHP] Beveiligen uploadscript en uploaddirectory



Pugi!
04/02/05, 14:45
Ik ben aan het experimenteren met uploaden van bestanden in PHP en gebruikt
daarvoor volgende script :
<html>
<head>
<title>Upload Script</title>
</head>
<?php
$file_dir = "/home/sitenaam/public_html/test/uploaddir";
$file_url = "http://www.sitenaam.be/test/uploaddir";
if (is_uploaded_file($HTTP_POST_FILES['userfile']['tmp_name']))
{
print "path: " . $HTTP_POST_FILES['userfile']['tmp_name'] ." <br>\n";
print "name: " . $HTTP_POST_FILES['userfile']['name'] . " <br>\n";
print "size: " . $HTTP_POST_FILES['userfile']['size'] . " <br>\n";
print "type: " . $HTTP_POST_FILES['userfile']['type'] . " <br>\n";
copy ($HTTP_POST_FILES['userfile']['tmp_name'], "$file_dir/" .
$HTTP_POST_FILES['userfile']['name']) or die ("Could not copy");
}
else
{
echo "Mogelijke aanval gespot: " . $HTTP_POST_FILES['userfile']['name'];
}
?>
<body>
<form enctype="multipart/form-data" action="<?php print $PHP_SELF ?>"
method="post">
<input type="hidden" name="MAX_FILE_SIZE" value="100000">
Upload dit bestand: <input name="userfile" type="file">
<input type="submit" value="Upload!">
</form>
</body>
</html>

Uploaden lukt enkel als ik op uploaddir chmod 777 doe. Maar volgens mij
betekent dat dat iedereen dan in die directory kan.
Is er geen mogelijkheid om bvb het uploadscript te laten aanloggen ? Of kun
je met php een chmod uitvoeren ? Dat lukt me voorlopig niet., maar dan zou
je kunnen vlak voor uploaden chmod 777 kunnen doen en nadien chmod 755.
Hoe beveilig je zoiets ?

Pugi!

Rene Pijlman
04/02/05, 14:55
Pugi!:
>Uploaden lukt enkel als ik op uploaddir chmod 777 doe.

Het zal ook wel lukken als alleen de user waaronder Apache/PHP draait in
de directory mag schrijven.

--
René Pijlman

Wat wil jij leren? http://www.leren.nl

Pugi!
04/02/05, 15:05
"Rene Pijlman" <reply.in.the.newsgroup@my.address.is.invalid> schreef in
bericht news:hjv6011e1fqhh6vbhhuiquhh64bua837me@4ax.com...
> Pugi!:
>>Uploaden lukt enkel als ik op uploaddir chmod 777 doe.
>
> Het zal ook wel lukken als alleen de user waaronder Apache/PHP draait in
> de directory mag schrijven.
>
> --
> René Pijlman
>
> Wat wil jij leren? http://www.leren.nl

Hoe bewerkstellig je dat ? Of moet ik dat aan mijn host vragen ?

Pugi!

John Bokma
04/02/05, 15:35
Pugi! wrote:

>
> "Rene Pijlman" <reply.in.the.newsgroup@my.address.is.invalid> schreef in
> bericht news:hjv6011e1fqhh6vbhhuiquhh64bua837me@4ax.com...
>> Pugi!:
>>>Uploaden lukt enkel als ik op uploaddir chmod 777 doe.
>>
>> Het zal ook wel lukken als alleen de user waaronder Apache/PHP draait in
>> de directory mag schrijven.
>>
>> --
>> René Pijlman
>>
>> Wat wil jij leren? http://www.leren.nl
>
> Hoe bewerkstellig je dat ? Of moet ik dat aan mijn host vragen ?

Probeer eerst 700 werkt dit?
Dan 770 werkt dit?
dan 707

Hoe meer nullen hoe beter.

--
John Voorbeeldscripts in Perl: http://johnbokma.com/perl/
Website design: http://johnbokma.com/websitedesign/
Ervaren Perl / Java programmeur beschikbaar: http://castleamber.com/
Tevreden opdrachtgevers: http://castleamber.com/testimonials.html

Daniel Tryba
04/02/05, 16:45
Pugi! <reply@group> wrote:
[knip]

Een uitermate verouderd script. Zie de super globals
($_FILES/$_SERVER), register globals instellingen (die $PHP_SELF) en
move_uploaded_file() (ipv copy()) in de handleiding.

> Uploaden lukt enkel als ik op uploaddir chmod 777 doe. Maar volgens mij
> betekent dat dat iedereen dan in die directory kan.

Iedereen op die machine.

> Is er geen mogelijkheid om bvb het uploadscript te laten aanloggen ?

Dat kan bv met de functies ftp

> Of kun je met php een chmod uitvoeren ? Dat lukt me voorlopig niet.,
> maar dan zou je kunnen vlak voor uploaden chmod 777 kunnen doen en
> nadien chmod 755. Hoe beveilig je zoiets ?

Er is zeer waarschijnlijk weinig aan te doen, als de webserver/php onder
jou unieke id draaid (wat meestal niet het geval is) dan kan je uit de
voeten met Johns opmerking. Is dat niet het geval (meestal dus) dan
dient de webserver/php te kunnen schrijven (en lezen) op die plek, met
het resultaat dat iedereen die iets met de webserver/php kan doen dat
ook kan. Het toepassen van de ftp functies zou in dat geval kunnen
betekenen dat je login gegevens zijn te achterhalen.