Tryb bezpiecznyPodręcznik PHPPoprzedniNastępnyRozdział 16. Tryb bezpiecznySpis treściFunkcje ograniczone/wyłączone w trybie bezpiecznym
Tryb bezpieczny (Safe Mode) jest próbą rozwiązania problemów
bezpieczeństwa na współdzielnym serwerze. Co prawda rozwiązywanie ich na
poziomie PHP nie jest najlepszym rozwiązaniem, ale jeśli nie ma możliwości
zrobienia tego na poziomie serwera www lub systemu operacyjnego, na wielu
serwerach, zwłaszcza u usługodawców internetowych, używa się trybu
bezpiecznego.
Dykertywy konfiguracyjne odpowiadające za tryb bezpieczny:
safe_mode = Off
open_basedir =
safe_mode_exec_dir =
safe_mode_allowed_env_vars = PHP_
safe_mode_protected_env_vars = LD_LIBRARY_PATH
disable_functions =
Gdy opcja safe_mode jest włączona,
PHP sprawdza czy właścicielem pliku na którym na którym funkcja chce
operować i właścicielem uruchamianego skryptu jest ten sam użytkownik.
Na przykład:
-rw-rw-r-- 1 rasmus rasmus 33 Jul 1 19:20 script.php
-rw-r--r-- 1 root root 1116 May 26 18:01 /etc/passwd
Uruchomienie script.php
<?php
readfile('/etc/passwd');
?>
z uruchomionym trybem bezpiecznym spowoduje wyświetlenie błędu:
Warning: SAFE MODE Restriction in effect. The script whose uid is 500 is not
allowed to access /etc/passwd owned by uid 0 in /docroot/script.php on line 2
Jeśli zamiast włączać opcję safe_mode
ustawisz katalog open_basedir, wtedy wszystkie operacje plikowe bedą
ograniczone do tego katalogu. Na przykład (dla httpd.conf Apache'a):
<Directory /docroot>
php_admin_value open_basedir /docroot
</Directory>
Uruchomienie tego samego skryptu script.php z ustawionym katalogiem
open_basedir spowoduje wyświetlenie:
Warning: open_basedir restriction in effect. File is in wrong directory in
/docroot/script.php on line 2
Możesz także wyłączyć pojedyncze funkcje. Jeśli do pliku php.ini dodasz:
disable_functions readfile,system
po uruchomieniu skryptu otrzymasz:
Warning: readfile() has been disabled for security reasons in
/docroot/script.php on line 2
Funkcje ograniczone/wyłączone w trybie bezpiecznym
Jest to najprawdopodobniej wciąż niekompletna lista funkcji ograniczonych
przez tryb bezpieczny.
Tabela 16-1. Funkcje ograniczone w trybie bezpiecznymFunkcjaOgraniczeniadbmopen()Sprawdza czy plik(i)/katalogi, na których chcesz
operować, mają takie same UID jak skrypt, który jest aktualnie
wykonywany.dbase_open()Sprawdza czy plik(i)/katalogi, na których chcesz
operować, mają takie same UID jak skrypt, który jest aktualnie
wykonywany.filepro()Sprawdza czy plik(i)/katalogi, na których chcesz
operować, mają takie same UID jak skrypt, który jest aktualnie
wykonywany.filepro_rowcount()Sprawdza czy plik(i)/katalogi, na których chcesz
operować, mają takie same UID jak skrypt, który jest aktualnie
wykonywany.filepro_retrieve()Sprawdza czy plik(i)/katalogi, na których chcesz
operować, mają takie same UID jak skrypt, który jest aktualnie
wykonywany.ifx_*()Podlega ograniczeniom narzuconym przez sql_safe_mode,
(!= tryb bezpieczny)ingres_*()Podlega ograniczeniom narzuconym przez sql_safe_mode,
(!= tryb bezpieczny)mysql_*()Podlega ograniczeniom narzuconym przez sql_safe_mode,
(!= tryb bezpieczny)pg_loimport()Sprawdza czy plik(i)/katalogi, na których chcesz
operować, mają takie same UID jak skrypt, który jest aktualnie
wykonywany.posix_mkfifo()Sprawdza, czy katalog, na którym chesz
operować, ma takie same UID jak skrypt, który jest aktualnie
wykonywany.putenv()Podlega dyrektywom safe_mode_protected_env_vars i
safe_mode_allowed_env_vars w php.ini. Zobacz również dokumantację
do putenv()move_uploaded_file()Sprawdza czy plik(i)/katalogi, na których chcesz
operować, mają takie same UID jak skrypt, który jest aktualnie
wykonywany. chdir()Sprawdza, czy katalog, na którym chesz
operować, ma takie same UID jak skrypt, który jest aktualnie
wykonywany.dl()Ta funkcja jest niedostępna w trybie bezpiecznymlewy apostrofTa funkcja jest niedostępna w trybie bezpiecznymshell_exec() (funkcja równoważna z
lewym apostrofem)Ta funkcja jest niedostępna w trybie bezpiecznymexec()Możesz uruchamiać programy jedynie z katalogu zdefiniowanego
dyrektywą
safe_mode_exec_dir.
Ze względów praktycznych obecnie nie ma możliwości stosowania
.. w ścieżce do programu.system()Można uruchamiać programy jedynie z katalogu zdefiniowanego
dyrektywą
safe_mode_exec_dir.
Ze względów praktycznych obecnie nie ma możliwości stosowania
.. w ścieżce do programu.passthru()Można uruchamiać programy jedynie z katalogu zdefiniowanego
dyrektywą
safe_mode_exec_dir.
Ze względów praktycznych obecnie nie ma możliwości stosowania
.. w ścieżce do programu.popen()Można uruchamiać programy jedynie z katalogu zdefiniowanego
dyrektywą
safe_mode_exec_dir.
Ze względów praktycznych obecnie nie ma możliwości stosowania
.. w ścieżce do programu.mkdir()Sprawdza, czy katalog, na którym chesz
operować, ma takie same UID jak skrypt, który jest aktualnie
wykonywany.rmdir()Sprawdza czy plik(i)/katalogi, na których chcesz
operować, mają takie same UID jak skrypt, który jest aktualnie
wykonywany.rename()Sprawdza czy plik(i)/katalogi, na których chcesz
operować, mają takie same UID jak skrypt, który jest aktualnie
wykonywany. Sprawdza, czy katalog, na którym chesz
operować, ma takie same UID jak skrypt, który jest aktualnie
wykonywany.unlink()Sprawdza czy plik(i)/katalogi, na których chcesz
operować, mają takie same UID jak skrypt, który jest aktualnie
wykonywany. Sprawdza, czy katalog, na którym chesz
operować, ma takie same UID jak skrypt, który jest aktualnie
wykonywany.copy()Sprawdza czy plik(i)/katalogi, na których chcesz
operować, mają takie same UID jak skrypt, który jest aktualnie
wykonywany. Sprawdza, czy katalog, na którym chesz
operować, ma takie same UID jak skrypt, który jest aktualnie
wykonywany. (on
source and
target) chgrp()Sprawdza czy plik(i)/katalogi, na których chcesz
operować, mają takie same UID jak skrypt, który jest aktualnie
wykonywany.chown()Sprawdza czy plik(i)/katalogi, na których chcesz
operować, mają takie same UID jak skrypt, który jest aktualnie
wykonywany.chmod()Sprawdza czy plik(i)/katalogi, na których chcesz
operować, mają takie same UID jak skrypt, który jest aktualnie
wykonywany. In addition, you cannot
set the SUID, SGID and sticky bitstouch()Sprawdza czy plik(i)/katalogi, na których chcesz
operować, mają takie same UID jak skrypt, który jest aktualnie
wykonywany. Sprawdza, czy katalog, na którym chesz
operować, ma takie same UID jak skrypt, który jest aktualnie
wykonywany.symlink()Sprawdza czy plik(i)/katalogi, na których chcesz
operować, mają takie same UID jak skrypt, który jest aktualnie
wykonywany. Sprawdza, czy katalog, na którym chesz
operować, ma takie same UID jak skrypt, który jest aktualnie
wykonywany. (note: only the target is
checked)link()Sprawdza czy plik(i)/katalogi, na których chcesz
operować, mają takie same UID jak skrypt, który jest aktualnie
wykonywany. Sprawdza, czy katalog, na którym chesz
operować, ma takie same UID jak skrypt, który jest aktualnie
wykonywany. (note: only the target is
checked)getallheaders()
W tybie bezpiecznym, nagłowki zaczynające się od 'authorization'
(wielkość liter bez znaczenia) nie będą zwracane. Uwaga: w
implementacji dla serwera AOL ta funkcjonalność jest uszkodzona
Każda funkcja korzystająca z
php4/main/fopen_wrappers.c
??
PoprzedniSpis treściNastępnyStałe połączenia z bazami danychPoczątek rozdziałuOpis funkcji
Wyszukiwarka
Podobne podstrony:
features safe modeMode 03 Chaos ModefeaturesDepeche Mode It Doesn´t MatterfeaturesLPC1114 Cortex M0 Timer0 Match Mode InterruptDepeche Mode Only When I Lose MyselfDepeche Mode When The Body SpeaksfeaturesDepeche Mode SacredHP 5000 D640 Enhanced Features Manualsafe colorsfotokomorka automatow bramowych safe kj2005The Complete Pentium Instruction Set Table (32 Bit Addressing Mode Only)Depeche Mode Stories Of Oldwięcej podobnych podstron