Zacznijmy kurs

Tryb bezpieczny

Rozdział 42. Tryb bezpieczny

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.

Dyrektywy konfiguracyjne odpowiadajÄ…ce za tryb bezpieczny:
safe_mode = Off
safe_mode_gid = 0
safe_mode_include_dir =
safe_mode_exec_dir =
open_basedir =
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. Pamiętaj jednak, że dyrektywa disable_functions może być użyta tylko w pliku php.ini, co oznacza, że nie da się wyłączać funkcji w sekcjach VirtualHost i Directory w pliku httpd.conf. 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 42-1. Funkcje ograniczone w trybie bezpiecznym

FunkcjaOgraniczenia
dbmopen()Sprawdza czy pliki lub katalogi, na których będą przeprowadzane operacje, mają takie same UID (owner) jak skrypt, który jest aktualnie wykonywany.
dbase_open()Sprawdza czy pliki lub katalogi, na których będą przeprowadzane operacje, mają takie same UID (owner) jak skrypt, który jest aktualnie wykonywany.
filepro()Sprawdza czy pliki lub katalogi, na których będą przeprowadzane operacje, mają takie same UID (owner) jak skrypt, który jest aktualnie wykonywany.
filepro_rowcount()Sprawdza czy pliki lub katalogi, na których będą przeprowadzane operacje, mają takie same UID (owner) jak skrypt, który jest aktualnie wykonywany.
filepro_retrieve()Sprawdza czy pliki lub katalogi, na których będą przeprowadzane operacje, mają takie same UID (owner) 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 pliki lub katalogi, na których będą przeprowadzane operacje, mają takie same UID (owner) jak skrypt, który jest aktualnie wykonywany.
posix_mkfifo()Sprawdza, czy katalog, na którym ma być wykonywana operacja, ma takie same UID (owner) 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 pliki lub katalogi, na których będą przeprowadzane operacje, mają takie same UID (owner) jak skrypt, który jest aktualnie wykonywany.
chdir()Sprawdza, czy katalog, na którym ma być wykonywana operacja, ma takie same UID (owner) jak skrypt, który jest aktualnie wykonywany.
dl()Ta funkcja jest niedostępna w trybie bezpiecznym
lewy apostrofTa funkcja jest niedostępna w trybie bezpiecznym
shell_exec() (funkcja równoważna z lewym apostrofem)Ta funkcja jest niedostępna w trybie bezpiecznym
exec()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 ma być wykonywana operacja, ma takie same UID (owner) jak skrypt, który jest aktualnie wykonywany.
rmdir()Sprawdza czy pliki lub katalogi, na których będą przeprowadzane operacje, mają takie same UID (owner) jak skrypt, który jest aktualnie wykonywany.
rename()Sprawdza czy pliki lub katalogi, na których będą przeprowadzane operacje, mają takie same UID (owner) jak skrypt, który jest aktualnie wykonywany. Sprawdza, czy katalog, na którym ma być wykonywana operacja, ma takie same UID (owner) jak skrypt, który jest aktualnie wykonywany.
unlink()Sprawdza czy pliki lub katalogi, na których będą przeprowadzane operacje, mają takie same UID (owner) jak skrypt, który jest aktualnie wykonywany. Sprawdza, czy katalog, na którym ma być wykonywana operacja, ma takie same UID (owner) jak skrypt, który jest aktualnie wykonywany.
copy()Sprawdza czy pliki lub katalogi, na których będą przeprowadzane operacje, mają takie same UID (owner) jak skrypt, który jest aktualnie wykonywany. Sprawdza, czy katalog, na którym ma być wykonywana operacja, ma takie same UID (owner) jak skrypt, który jest aktualnie wykonywany. (dla źródła i przeznaczenia)
chgrp()Sprawdza czy pliki lub katalogi, na których będą przeprowadzane operacje, mają takie same UID (owner) jak skrypt, który jest aktualnie wykonywany.
chown()Sprawdza czy pliki lub katalogi, na których będą przeprowadzane operacje, mają takie same UID (owner) jak skrypt, który jest aktualnie wykonywany.
chmod()Sprawdza czy pliki lub katalogi, na których będą przeprowadzane operacje, mają takie same UID (owner) jak skrypt, który jest aktualnie wykonywany. Dodatkowo, nie można ustawić bitów SUID, SGID i sticky bit.
touch()Sprawdza czy pliki lub katalogi, na których będą przeprowadzane operacje, mają takie same UID (owner) jak skrypt, który jest aktualnie wykonywany. Sprawdza, czy katalog, na którym ma być wykonywana operacja, ma takie same UID (owner) jak skrypt, który jest aktualnie wykonywany.
symlink()Sprawdza czy pliki lub katalogi, na których będą przeprowadzane operacje, mają takie same UID (owner) jak skrypt, który jest aktualnie wykonywany. Sprawdza, czy katalog, na którym ma być wykonywana operacja, ma takie same UID (owner) jak skrypt, który jest aktualnie wykonywany. (sprawdzany jest jedynie element do którego tworzony jest link)
link()Sprawdza czy pliki lub katalogi, na których będą przeprowadzane operacje, mają takie same UID (owner) jak skrypt, który jest aktualnie wykonywany. Sprawdza, czy katalog, na którym ma być wykonywana operacja, ma takie same UID (owner) jak skrypt, który jest aktualnie wykonywany. (sprawdzany jest jedynie element do którego tworzony jest link)
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 ??



WÄ…tki z forum o php

Najnowsze posty naszych userów

nie w³±cza sie ca³kowicie instalator systemu win xp.
witam, chcê mojej dziewczynie sformatowaæ komputer, po ustawieniu kolejno¶ci bootowania, resetuje komputer, wk³adam plyte z windowsem, i pojawia sie czarny ekran z informacja, ze wlacza sie instalator windows, potem pojawia sie niebeiski ekran z napisem instalator rozpakowywuje pliki i wtym momencie komputer staje, dysk przestaje sie krecic i naped tez, cos jakby zawieszka, dzieje sie to zarowno w przypadku winxp 1 wer. jak i ta z sp2. prosze o pomoc,

plyta glowna ECS, proc. Athlon 1GHz.
dual layer czy Double layer
Witam


Patrzê w everest jakie p³yty obs³uguje moja nagrywarka dvd.I przy jednej opcji pisze DVD+R9 Dual Layer czym¶ siê rózni od duble layer?I czy mogê kupiæ p³ytki duble layer aby je nagraæ? czy musz± byæ dual layer



Kaszanka dobra do wszystkiego [+18]
Drogie Bravo, drodzy koledzy i kole¿anki.Mam na imiê Dagmara i mam 19 lat. Moja sytuacja jest bardzo krepuj±ca i nie wiem co teraz mam zrobiæ. Jestem ju¿ doros³± dziewczyn± i mam wspania³ego ch³opaka o imieniu Marcin, którego kocham ponad ¿ycie i my¶lê ze on odwzajemnia moje uczucie. Jeste¶my ju¿ razem 6 miesiêcy i postanowili¶my dokonaæ Aktu Mi³osnego, aby umocniæ nasz zwi±zek. Nie fart polega na tym ¿e ja jestem dziewic±, a z tego co wiem On jest ju¿ do¶wiadczonym mê¿czyzn±. Bardzo obawia³am siê ¿e nie spe³niê jego oczekiwa , po prostu zawiodê! Na dodatek wszystkie moje kole¿anki potraci³y ju¿ dziewictwo i ¿eby mieæ o czym rozmawiaæ z nimi, powiedzia³am ¿e ja równie¿ nie jestem jak to siê mówi potocznie "cnotk±". O tym fakcie dowiedzia³ siê Marcin od mojej kole¿anki, Moniki, która jest jego dobr± znajom±. Gdy Marcin zapyta³ czy to prawda nie zaprzeczy³am. Ustalili¶my nasz Pierwszy Raz na najbli¿szy weekend, poniewa¿ Marcina rodzice jad± na wesele. Bardzo siê obawia³am bólu, oraz tego ¿e Marcin pos±dzi mnie o k³amstwo, wiêc postanowi³am jako¶ sobie poradziæ. Nie chcia³am przespaæ siê z "pierwszym lepszym" gdy¿ kocham Marcina i chcê aby to on by³ moim Pierwszym Mê¿czyzn±!! Akurat zdarzy³o siê tak ¿e by³am sama w domu i postanowi³am uporaæ siê z moja b³ona dziewicz±. Nie chcia³am robiæ tego palcami ani jakim¶ twardym przedmiotem a na wibrator niestety nie by³o by mnie staæ. Posz³am wiêc do lodówki i zobaczy³am nadaj±c± siê do mojego czynu kaszankê. Odpowiada³a mi rozmiarem i grubo¶ci±, by³a trochê za zimna i za twarda wiêc postanowi³am ja podgotowaæ. Kiedy nareszcie ostyg³a, nasmarowa³am ja wazelin±, i zaczê³am wk³adaæ j± do pochwy. Podda³am siê chyba za bardzo chwili i za bardzo j± ¶cisnê³am. Wtedy sta³o siê najgorsze co mog³o siê staæ!! KASZANKA SIÊ Z£AMA£A!!!!!!!!!!Rozpaczliwie próbowa³am j± wyj±æ palcami ale chyba trochê za bardzo j± rozgotowa³am i niektóre kawa³ki kaszanki zosta³y mi w pochwie i nie mogê ich wyj±æ! Wstydzê siê i¶æ do ginekologa a za kilka dni wyczekiwany przez nasz± dwójkê upojny weekend!! Nie wiem co mam zrobiæ i do kogo siê zwróciæ. Co teraz pomy¶li o mnie Marcin!! B£AGAM POMÓ¯CIE!!!!!
Zrozpaczona

Odpowied¼ Bravo:
Na wstêpie pragniemy podziêkowaæ Ci za podzielenie siê z nami swoim problemem. W twojej nader ciekawej sytuacji proponujemy Ci dwa rozwi±zania:
1. Ekstrawaganckie w stylu new art.
2. Si³owe

Pierwsze wydaje nam siê ciekawe lecz mo¿e nie przynie¶æ spodziewanych efektów. Musisz pokroiæ cebulê w kostkê, a nastêpnie podsma¿yæ j± na z³ocisty kolor na patelni (koniecznie na oleju z pierwszego tloczenia). Nastêpnie musisz dopchaæ j± do pochwy i zrobiæ 3-4 przysiadów tak aby zmiesza³a siê z kaszank±. Potem zapro¶ swojego ukochanego na romantyczne spotkanie inicjuj±ce. Przed pierwszym stosunkiem zaproponujesz mu wiêc kaszankê po staropolsku w wersji francuskiej. W ten sposób osi±gniesz dwa cele: udowodnisz mu, ¿e bardzo go kochasz i jednocze¶nie poka¿esz, ¿e ¶wietnie gotujesz. Przypominamy Ci powiedzenie "PRZEZ ¯O£¡DEK DO SERCA".

Rozwi±zanie drugie jest jednak o wiele bardziej skuteczne. Przygotuj patelniê na której mia³a¶ zarumieniæ cebulkê. Nastêpnie we¼ j± w praw± rêkê (je¶li jeste¶ leworêczna to w lew±) i [beeep]nij siê ni± z ca³ej si³y w g³owê - bo tobie to ju¿ chyba nic nie pomo¿e!
Z powa¿aniem Redakcja


Problemem bylo to, ze autor nie pozostawil mozliwosci zmian, wiec za pomoca programu PHP WebPage Editor zmienilem pewne potrzebne mi wartosci (ilosci wojsk - to akurat bylo latwe do znalezienia...), ale nie wiem, ktore wartosci odpowiadaja za czas wysylania tych jednostek wojska - chce zmienic z tych kilkunastu sekud na ok 1,5 godz... (to dziwne, bo nie jest to regularne - niektore ataki wychodza co 10 sek, niektore co 15 albo 20.