Avatar billede dennism Nybegynder
14. februar 2006 - 14:48 Der er 9 kommentarer og
1 løsning

PHP: sikkerhed

Jeg har en webserver kørende, men jeg tvivler dog på dens sikkerhed.
Jeg kan f.eks. bruge funktionen file_put_contents(); derpå, hvormed man f.eks. kan gå ind og overskrive systemfiler.
Det er jeg naturligvis ikke interesseret i, at mine kunder kan gøre.

Nogen der kan fortælle, hvordan jeg kan forhindre dette? Samtidig vil jeg gerne selv kunne køre den..

(beklager, men har ikke flere point)
Avatar billede fixxxer Nybegynder
14. februar 2006 - 15:09 #1
Første ting du selvfølgelig gør, hvis der er andre end dig selv der bruger din server til at publisere php-sider, er at slå safe-mode til. Uden, vil alle kunne læse alt og skrive til alt på systemet.

I Apache kan du også skrive et direktiv for hver VirtualHost der bestemmer open_basedir
Når der er sat til kunden egen www-mappe, kan han, uanset safe-mode, ikke komme ud af sin egen mappe.

Læsestof:
http://uk2.php.net/features.safe-mode
Avatar billede dennism Nybegynder
14. februar 2006 - 15:14 #2
I min php.ini stå:
safe_mode = On

Dermed må safe-mode være slået til. Hvordan kan det så være, at jeg alligevel kan bruge denne funktion?

Jeg har ikke angivet noget open_basedir i mine vhosts. Sættes den bare med:
open_basedir c:/mappen

?
Avatar billede dennism Nybegynder
14. februar 2006 - 15:26 #3
Status:
"safe_mode = On" i PHP.ini.

Jeg erklærer f.eks. mit vhost således i Apache:

<VirtualHost *>
DocumentRoot c:/www/demaweb.dk/www
ServerName demaweb.dk
ServerAlias *.demaweb.dk
ServerAdmin admin@demaweb.dk
open_basedir c:/www/demaweb.dk/www/
CustomLog c:/www/demaweb.dk/access.log combined
ErrorLog c:/www/demaweb.dk/error.log
</VirtualHost>

Er det nok til at sikre Apache/PHP?
Avatar billede fixxxer Nybegynder
14. februar 2006 - 16:01 #4
Prøv at læse eksemplerne for hvordan safe-mode direktivet bestemmer brugen af funktionskald - der er ingen grund til at jeg skal gentage, med egne ord, hvad der står på php.net !-)

"When safe_mode is on, PHP checks to see if the owner of the current script matches the owner of the file to be operated on by a file function or its directory. For example:"

Din vhost konfiguration ser ok ud.

Hvilken sikkerhed er det helt præcist du vil opnå? Er det at besøgende på dit site ikke kan lave lort i den, eller er det at du udbyder plads med mulighed for PHP til andre på din server?
Avatar billede dennism Nybegynder
14. februar 2006 - 16:05 #5
Jeg tilbyder webhost til andre på min server.
Avatar billede fixxxer Nybegynder
14. februar 2006 - 16:10 #6
Så skulle safe_mode og open_basedir sikre at der ikke kan tilgåes andre filer end dem ejet af det respektive vhosts UID.

Men hvordan det fungere på en NT installation, har jeg ingen anelse om.
Avatar billede dennism Nybegynder
16. februar 2006 - 10:39 #7
Efter at have tilføjet open_basedir til min vhost, som jeg fortalte tidligere, går Apache ned, når den bliver genstartet. Er du sikker på, at det er den rigtige måde at angive open_basedir på?
Avatar billede fixxxer Nybegynder
16. februar 2006 - 12:19 #8
Igen, der er fyledstgørende eksempler i dokumentationen..

<Directory /docroot>
  php_admin_value open_basedir /docroot
</Directory>


Jeg beklager at jeg ikke spottede den i dit eksempel 14/02-2006 15:26:02
Avatar billede dennism Nybegynder
16. februar 2006 - 13:53 #9
Oki, tak.

Smider du lige et svar?
Avatar billede fixxxer Nybegynder
16. februar 2006 - 15:10 #10
Så pyt :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester