PDA

Zobacz pełną wersję : Safe_mode - trochę objasnienia



zwiastun
31-08-2008, 11:47
Skąd się biorą problemy na serwerach z włączonym trybem bezpiecznym?
Znalazłem gdzieś w notatkach taki "wycięty" skądś i niestety, niepodpisany fragment:

<meta http-equiv="CONTENT-TYPE" content="text/html; charset=utf-8"><title></title><meta name="GENERATOR" content="OpenOffice.ux.pl 2.4.1 (Win32)"><style type="text/css"> <!-- @page { size: 21cm 29.7cm; margin: 2cm } P { margin-bottom: 0.21cm } --> </style> Istotną kwestią z punktu widzenia programisty jest sposób implementacji środowiska PHP. Wyróżnia się dwie dominujące metody. Pierwszą z nich jest instalacja środowiska w postaci modułu serwera Apache - mod_php, z dodatkowymi restrykcjami safe_mode. Ten wariant spotykany jest szczególnie w tańszych hostingach. Nie bez powodu mówi się, że jest to metoda stosowana przez tych administratorów, którzy nie potrafią skonfigurować systemu inaczej.
Zaletą implementacji mod_php jest dużo szybsze działanie niż w przypadku konfiguracji alternatywnej, ponieważ PHP jest obsługiwany bezpośrednio w ramach instalacji serwera Apache. Lepiej także integruje się z tym serwerem, udostępniając dzięki temu dodatkową funkcjonalność dla programisty.
Po stronie wad można zapisać to, że mod_php automatycznie przejmuje uprawnienia użytkownika, w ramach którego działa serwer WWW. Ponieważ zwykle jest to uniwersalny użytkownik posiadający uprawnienia do odczytu (a często także zapisu) danych wszystkich klientów, stosuje się dodatkową restrykcję "safe_mode" (tzw. tryb bezpieczny), która na poziomie środowiska PHP ogranicza dostęp do plików nienależących do użytkownika.
Jest to jednak rozwiązanie zapewniające bezpieczeństwo jedynie na poziomie samego interpretera PHP. Ponieważ taki sposób kontroli uprawnień nie współgra z natywnym systemem uprawnień systemu operacyjnego, jest on znacznie bardziej podatny na ewentualne luki bezpieczeństwa. Ponadto tryb "safe_mod" przeszkadza w uruchomieniu wielu popularnych skryptów.
Alternatywnie wdraża się więc metodę uruchamiania skryptów PHP w trybie CGI. Przy poprawnej konfiguracji w momencie uruchamiania skryptu wraz z interpreterem PHP system przełącza uprawnienia skryptu na docelowego, realnie istniejącego w systemie użytkownika. Ten odpowiada najczęściej użytkownikowi FTP.
Taki zabieg pozwala ograniczyć na poziomie systemowym wgląd w dane na kontach innych klientów (choć wymaga jeszcze kilku dodatkowych zabiegów). Jest to ogromna zaleta trybu CGI, choć nie jest on niestety rozwiązaniem idealnym. Bezpieczeństwo osiągane jest kosztem zmniejszenia wydajności - dla każdego skryptu uruchamiany jest odrębny proces PHP, co trwa i zjada dodatkowe zasoby systemowe.
Większość dostawców hostingu radzi sobie z tą sytuacją, wdrażając rozszerzoną wersję CGI - system FastCGI. Dzięki zastosowaniu odpowiedniej liczby "oczekujących środowisk PHP" następują znaczące oszczędności kosztu czasowego uruchomienia skryptu. Wciąż jednak jest to metoda mniej wydajna niż mod_php, za to bardziej bezpieczna.
Na palcach jednej ręki można policzyć dostawców hostingu, którzy wdrożyli rozwiązanie hybrydowe. Dzięki własnym modyfikacjom serwera Apache, każde zapytanie o stronę WWW jest wykonywane na uprawnieniach użytkownika FTP, a nie użytkownika uniwersalnego (w momencie rozpoczynania obsługi zapytania następuje zmiana właściciela procesu).
Dzięki temu również mod_php działa automatycznie z odpowiednimi uprawnieniami, bez konieczności stosowania dodatkowych restrykcji safe_mod. W praktyce można zastosować jeszcze pewne dodatkowe usprawnienia, wdrażające obsługę wątków, co dodatkowo zwiększa wydajność. Jest to rozwiązanie bezpieczne i zarazem szybkie.
Na koniec możesz jeszcze zwrócić uwagę na dostępne biblioteki. Uczynisz to najprościej, rejestrując konta testowe w interesujących cię firmach hostingowych i uruchamiając u każdego skrypt z instrukcją phpinfo(). Generalnie im więcej bibliotek jest dostępnych, tym lepiej. Zwróć na nie szczególną uwagę, jeśli skrypty, których planujesz używać, mają szczególne wymagania w kwestii oczekiwanych bibliotek (zwykle taką informację znajdziesz w dokumentacji). Zapytaj administratorów, czy istnieje możliwość doinstalowania dodatkowych bibliotek w razie potrzeby.