|
BezpeΦn² re╛im PHP je pokus o °e╣enφ bezpeΦnosti sdφlen²ch server∙.
Je architekturßln∞ nekorektnφ pokou╣et se °e╣it tento problΘm na
·rovni PHP, ale proto╛e °e╣enφ na ·rovni webovskΘho serveru a operaΦnφho
systΘmu nejsou p°φli╣ realistickß, mnoho lidφ, zvla╣t∞ ISP, pou╛φvß
nynφ bezpeΦn² re╛im.
KonfiguraΦnφ direktivy, kterΘ ovlßdajφ bezpeΦn² re╛im:
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 = |
Pokud je safe_mode zapnut², PHP
kontroluje, je-li vlastnφk b∞╛φcφho skriptu vlastnφkem souboru, s nφm╛
se mß manipulovat. Nap°φklad:
-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 |
Spu╣t∞nφ skriptu script.php
<?php
readfile('/etc/passwd');
?> |
bude mφt v bezpeΦnΘm re╛imu za v²sledek tuto chybu:
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 |
Pokud namφsto safe_mode nastavφte
adresß° open_basedir, potom
v╣echny operace se soubory budou omezeny pod specifikovan² adresß°.
Nap°φklad (p°φklad Apache httpd.conf):
<Directory /docroot>
php_admin_value open_basedir /docroot
</Directory> |
Kdy╛ spustφte tent²╛ soubor script.php s timto nastavenφm
open_basedir, dostanete tento
v²sledek:
Warning: open_basedir restriction in effect. File is in wrong directory in
/docroot/script.php on line 2 |
M∙╛ete takΘ vypnout jednotlivΘ funkce. Pokud p°idßme toto do souboru
php.ini:
disable_functions readfile,system |
zφskßme takov²to v²stup:
Warning: readfile() has been disabled for security reasons in
/docroot/script.php on line 2 |
Toto je pravd∞podobn∞ ne·pln² a mo╛nß nesprßvn² p°ehled funkcφ
omezen²ch v
bezpeΦnΘm re╛imu.
Tabulka 23-1. Funkce omezenΘ v bezpeΦnΘm re╛imu Funkce | Omezenφ |
---|
dbmopen() | Kontroluje, zda soubory/adresß°e,
se kter²mi pracujete, majφ stejnΘ UID jako spu╣t∞n² skript. | dbase_open() | Kontroluje, zda soubory/adresß°e,
se kter²mi pracujete, majφ stejnΘ UID jako spu╣t∞n² skript. | filepro() | Kontroluje, zda soubory/adresß°e,
se kter²mi pracujete, majφ stejnΘ UID jako spu╣t∞n² skript. | filepro_rowcount() | Kontroluje, zda soubory/adresß°e,
se kter²mi pracujete, majφ stejnΘ UID jako spu╣t∞n² skript. | filepro_retrieve() | Kontroluje, zda soubory/adresß°e,
se kter²mi pracujete, majφ stejnΘ UID jako spu╣t∞n² skript. | ifx_*() | sql_safe_mode restrictions, (!= safe mode) | ingres_*() | sql_safe_mode restrictions, (!= safe mode) | mysql_*() | sql_safe_mode restrictions, (!= safe mode) | pg_loimport() | Kontroluje, zda soubory/adresß°e,
se kter²mi pracujete, majφ stejnΘ UID jako spu╣t∞n² skript. | posix_mkfifo() | Kontroluje, zda adresß°,
ve kterΘm pracujete, mß stejnΘ UID jako spu╣t∞n² skript. | putenv() | Obeys the safe_mode_protected_env_vars and
safe_mode_allowed_env_vars ini-directives. Viz takΘ dokumentaci
putenv() | move_uploaded_file() | Kontroluje, zda soubory/adresß°e,
se kter²mi pracujete, majφ stejnΘ UID jako spu╣t∞n² skript. | chdir() | Kontroluje, zda adresß°,
ve kterΘm pracujete, mß stejnΘ UID jako spu╣t∞n² skript. | dl() | Tyto funkce jsou v bezpeΦnΘm re╛imu (safe-mode) deaktivovßny. | backtick operßtor | Tyto funkce jsou v bezpeΦnΘm re╛imu (safe-mode) deaktivovßny. | shell_exec() (funkΦnφ ekvivalent backticks) | Tyto funkce jsou v bezpeΦnΘm re╛imu (safe-mode) deaktivovßny. | exec() | M∙╛ete spou╣t∞t programy pouze uvnit° adresß°e safe_mode_exec_dir.
Z praktick²ch d∙vod∙ nenφ momentßln∞ mo╛nΘ mφt v cest∞ k souboru
s programem komponenty ... | system() | M∙╛ete spou╣t∞t programy pouze uvnit° adresß°e safe_mode_exec_dir.
Z praktick²ch d∙vod∙ nenφ momentßln∞ mo╛nΘ mφt v cest∞ k souboru
s programem komponenty ... | passthru() | M∙╛ete spou╣t∞t programy pouze uvnit° adresß°e safe_mode_exec_dir.
Z praktick²ch d∙vod∙ nenφ momentßln∞ mo╛nΘ mφt v cest∞ k souboru
s programem komponenty ... | popen() | M∙╛ete spou╣t∞t programy pouze uvnit° adresß°e safe_mode_exec_dir.
Z praktick²ch d∙vod∙ nenφ momentßln∞ mo╛nΘ mφt v cest∞ k souboru
s programem komponenty ... | mkdir() | Kontroluje, zda adresß°,
ve kterΘm pracujete, mß stejnΘ UID jako spu╣t∞n² skript. | rmdir() | Kontroluje, zda soubory/adresß°e,
se kter²mi pracujete, majφ stejnΘ UID jako spu╣t∞n² skript. | rename() | Kontroluje, zda soubory/adresß°e,
se kter²mi pracujete, majφ stejnΘ UID jako spu╣t∞n² skript. Kontroluje, zda adresß°,
ve kterΘm pracujete, mß stejnΘ UID jako spu╣t∞n² skript. | unlink() | Kontroluje, zda soubory/adresß°e,
se kter²mi pracujete, majφ stejnΘ UID jako spu╣t∞n² skript. Kontroluje, zda adresß°,
ve kterΘm pracujete, mß stejnΘ UID jako spu╣t∞n² skript. | copy() | Kontroluje, zda soubory/adresß°e,
se kter²mi pracujete, majφ stejnΘ UID jako spu╣t∞n² skript. Kontroluje, zda adresß°,
ve kterΘm pracujete, mß stejnΘ UID jako spu╣t∞n² skript. (pro
source a
target) | chgrp() | Kontroluje, zda soubory/adresß°e,
se kter²mi pracujete, majφ stejnΘ UID jako spu╣t∞n² skript. | chown() | Kontroluje, zda soubory/adresß°e,
se kter²mi pracujete, majφ stejnΘ UID jako spu╣t∞n² skript. | chmod() | Kontroluje, zda soubory/adresß°e,
se kter²mi pracujete, majφ stejnΘ UID jako spu╣t∞n² skript. Navφc nem∙╛ete nastavovat
SUID, SGID a sticky bit | touch() | Kontroluje, zda soubory/adresß°e,
se kter²mi pracujete, majφ stejnΘ UID jako spu╣t∞n² skript. Kontroluje, zda adresß°,
ve kterΘm pracujete, mß stejnΘ UID jako spu╣t∞n² skript. | symlink() | Kontroluje, zda soubory/adresß°e,
se kter²mi pracujete, majφ stejnΘ UID jako spu╣t∞n² skript. Kontroluje, zda adresß°,
ve kterΘm pracujete, mß stejnΘ UID jako spu╣t∞n² skript. (pozn.: testovßn je pouze
cφl) | link() | Kontroluje, zda soubory/adresß°e,
se kter²mi pracujete, majφ stejnΘ UID jako spu╣t∞n² skript. Kontroluje, zda adresß°,
ve kterΘm pracujete, mß stejnΘ UID jako spu╣t∞n² skript. (pozn.: testovßn je pouze
cφl) | getallheaders() | V bezpeΦnΘm re╛imu nebudou hlaviΦky zaΦφnajφcφ 'authorization'
(bez ohledu na velikost pφsmen) vraceny. Varovßnφ: toto nefunguje
s aol-server implementacφ getallheaders()! | JakΘkoli funkce kterΘ pou╛φvajφ
php4/main/fopen_wrappers.c
| ?? |
| |