On Thu, 30 Nov 2006 10:17:01 +0100, "Jacob" <jacob@removenetworkz.dk>
wrote:
>Jeg har nogle php ting kørende på min server.. bl.a php-fusion og
>phpmyprofiler til dvd'er... disse ting kræver at nogle mapper på serveren er
>chmodded 777 eller ejet af apache. Det giver jo besøgende skriverettigheder
>på serveren...
Hvilke "besøgende" taler vi om her? Kun brugere på maskinen
(heriblandt brugere, der kan afvikle php-kode).
Problemet opstår, hvis brugeren fx kan uploade en php-fil til en
mappe, og bagefter tilgå den, fx ved at uploade test.php, og bagefter
gå ind på fx
http://server/uploadede_filer/test.php
Et par detaljer i den forbindelse:
- Man kan overveje at lægge denne mappe uden for webscope, så man ikke
kan tilgå en fil direkte udefra, men skal igennem en PHP-fil, der evt.
tjekker sikkerhedsrettigheder, men primært blot *outputter* den
uploadede fil. Man kunne fx også gemme filen i en database. Under alle
omstændigheder andre steder end hvor man kan kalde filen direkte.
- En anden måde, man kan undgå, at den bliver behandlet som en
PHP-fil, er selv at være herre over filens extension. Det kan godt
være at filen ligner et GIF-billede, men derfor er det stadigvæk ikke
i orden, at den ender med at hedde "hest.php". Upload-scriptet bør
selv sætte filnavnet (eller i det mindste extensionen) til fx .gif
eller hvad der er passende, hvis filen absolut skal ende inden for
web-scope.
- Man kan slå PHP fra for bestemte mapper, fx for ens upload-mappe.
Det gøres ved at sætte "engine"-konfigurations-indstillingen til Off
for den mappe (fx i en .htaccess-fil).
- open_basedir giver også mulighed for at begrænse PHP-adgang til fx
den aktuelle DOCUMENT_ROOT.
>Men jeg har ikke så frygtelig meget forstand på php andet end at det er på
>serveren og at der kan køres php sider. For at disse php ting virker bliver
>jeg nød til at sætte safe_mode = off i php.ini...
Det lyder mærkeligt. Med safe_mode sat til off, vil sikkerhedshuller
ikke blot give problemer for ens php-baserede sites, men for al øvrig
data på serveren, idet der er mulighed for her at afvikle vilkårlig
kode. Derfor bør du hurtigst muligt kigge på, hvorfor det er
nødvendigt at køre uden safe_mode.
Det er ikke nødvendigt at slå safe_mode fra, bare fordi man skal
uploade filer:
http://safemode.ter.dk/
Skal ens script absolut køre et eller andet eksternt program, så kan
man stadigvæk slå safe_mode til, og så blot i php.ini rette
indstillingen safe_mode_exec_dir til en mappe, hvor man lægger de få
programmer, PHP godt må afvikle.
--
- Peter Brodersen
Kendt fra Internet