Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zabezpieczenie servera
Forum PHP.pl > Forum > Serwery WWW > Apache
Ccn
Mam server na Windows XP Professional SP2, system plików FAT32, wersja php 4.3.11, wersja apache 1.* (niepamiętam ile).

Server jest dla sieci lokalnej, safe_mode = On, register_globals = Off.

Skrypt rmdir('c:/windows'); zwraca Permissions Denied, ale np. unlink('c:/windows/jakiś_plik_systemowy'); już nie. Łatwo mi rozwalić komp. Da sie to jakoś zabezpieczyć questionmark.gif? (Chciałbym tak, żeby skrypty nie mogły operować na plikach, które znajdują się wyżej niż katalog domowy użytkownika)
FiDO
Zainteresuj sie opcja open_basedir w php.ini, mozesz ja ustawiac z poziomu httpd.conf'a dla kazdego katalogu inna, takze mozesz kazdemu userowi inaczej ustawic.
FiDO
Zle ustawiles sciezke w open_basedir..
W temacie, ktory zalozyles podales blad jaki Ci wyrzuca:
Kod
Warning: Unknown(): open_basedir restriction in effect. File(c:\usr\krasnal\www\ibp\index.php) is not within the allowed path(s): (c:\usr\apache\httpd) in Unknown on line 0

Ustawiles open_basedir na c:\usr\apache\httpd a powinienes na c:\usr\krasnal\www\ibp dla tego uzytkownika.
Ccn
Dobre smile.gif
Kod
Warning: unlink(): open_basedir restriction in effect. File(c:\test.txt) is not within the allowed path(s): (c:\usr\krasnal\www\ibp) in c:\usr\krasnal\www\ibp\unlink.php on line 2


Tylko jak do założyć dla każdego użytkownika servera ?
FiDO
No niestety z tego co mi wiadomo nie da sie zrobic tego na tyle fajnie, ze ustawisz sobie UserDir w apachu, a sciezki do open_basedir sie same poustawiaja automatycznie, wiec trzeba kazdemu userowi zrobic vhosta, cos na ten wzor:
Kod
<VirtualHost *>
    DocumentRoot c:\usr\krasnal\www\ibp
    php_admin_value open_basedir c:\usr\krasnal\www\ibp
    [...inne opcje VH...]
</VirtualHost>

<VirtualHost *>
    DocumentRoot c:\usr\krasnal\www\inny_user
    php_admin_value open_basedir c:\usr\krasnal\www\inny_user
    [...inne opcje VH...]
</VirtualHost>

itd.. dla reszty uzytkownikow.
Takie cos napewno zadziala, bo kiedys tak komus udostepnialem konto w akademiku i tez nie chcialem, zeby za bardzo sobie szalal. Nie pamietam w tej chwili, ale jestem prawie pewien, ze mimo tego open_basedir'a uzytkownik bedzie mogl sobie odpalic zewnetrzny program i z niego namieszac.. np. exec("del C:\\Windows\\jakis_plik"); dlatego dobrym pomyslem bedzie tez wylaczenie wszytkich funkcji umozliwiajacych odpalanie zewnetrznych procesow.
Ccn
Zrobiłem Safe_mode=On (a safe_mode_exec_dir zostawiłem pusty), więc system() exec() (i te inne do wykonywania programów) są niedostępne, a shell_exec() jest wyłączony w Safe Mode (w Windows jest to wykonanie czegoś z cmd.exe [Wiersza Poleceń], np. format c:)

Mam skrypty php do rejestracji usera na serverze i mógłbym do niego dodać dodanie VH do httpd.conf, ale jak przeładować pliki konfiguracyjne bez restaru servera ? Jest jakieś takie coś jak wysłanie do Apache zapytania do ponownego wczytania konfiguracji ?
FiDO
Nie za bardzo.. ale jesli masz tak jak mowisz to przy dodawaniu usera mozesz dodac wpis do harmonogramu zadan (ze wzgledu na raczej trudna automatyzacje windowsowego harmonogramu polecam nnCron Lite, ktory ma config rodem z unixowego cron'a i sprawdza jego zmiany co minute, wiec by sie nadal), ktory w ciagu minuty czy dwoch zrobi restart serwera (ewentualnie zaplanowac restart raz na dobe czy raz na godzine, wedle wlasnego upodobania).
Ccn
Ale sra błedem, że php_admin_value to zła komenda
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.