open_basedir robi jedna rzecz... jak ktos nawet podrzuci Ci swoj plik PHP i kaze w nim odczytac jakis plik nie znajdujacy sie w podkatalogu wskazanm przez open_basedir to PHP nie pozwoli otworzyc takiego pliku...
Kod:
open_basedir = D:/www
Od tej pory mozesz otwierac i zapisywac z poziomu kodu pliki w d:/www i podkatalogach i nigdzie wiecej. Path-traversal zostaje znacznie ograniczony... pozostaje kwestia exec'a - teoretycznie wiekszosc niekoniecznie bezpiecznych funkcji jest zablokowana jak podalem (phpinfo nie jest grozne samo w sobie poza tym ze dostarcza w cholere informacji ktore dalej moga sluzyc do przeprowadzenia ataku).
Co do open_basedir i safe_mode = On/Off... open_basedir jest niezalezny od safe_mode, to znaczy cokolwiek bedzie w safe_mode, open_basedir jesli ustawisz to bedzie dzialal (This directive is *NOT* affected by whether Safe Mode is turned On or Off).
Logowanie:
Kod:
; Print out errors (as a part of the output). For production web sites,
; you're strongly encouraged to turn this feature off, and use error logging
; instead (see below). Keeping display_errors enabled on a production web site
; may reveal security information to end users, such as file paths on your Web
; server, your database schema or other information.
display_errors = Off
; Even when display_errors is on, errors that occur during PHP's startup
; sequence are not displayed. It's strongly recommended to keep
; display_startup_errors off, except for when debugging.
display_startup_errors = Off
; Log errors into a log file (server-specific log, stderr, or error_log (below))
; As stated above, you're strongly advised to use error logging in place of
; error displaying on production web sites.
log_errors = On
; If this parameter is set to Off, then memory leaks will not be shown (on
; stdout or in the log). This has only effect in a debug compile, and if
; error reporting includes E_WARNING in the allowed list
report_memleaks = On
; Log errors to specified file.
error_log = /var/log/php-errors.log
; Log errors to syslog (Event Log on NT, not valid in Windows 95).
;error_log = syslog
To sa kawalki z tego co mam na moim desktopie gdzie pracuje czasami nad kodem albo testuje aplikacje w PHP... display_errors i display_startup_errors domyslnie jest na On, wiec jak aplikacja ma blad to wchodzac na strone ladnie powie gdzie jest blad i jaki blad... czasami pokazujac informacje o tym jaka baza danych jest, albo jaki blad w zapytaniu SQL... i juz masz dobry punkt zaczepienia do dalszego ataku - KONIECZNIE ZMIENIC NA 'OFF'. Teraz aby nie byc slepym i gluchym na to co sie dzieje trzeba wlaczyc logowanie do plikow/sysloga, wiec dajemy log_errors na On i podajemy gdzie chcemy miec - ja na moim dekstopie zbieram akurat do pliku a nie do sysloga - w syslogu mam juz mase innych ciekawostek wiec PHP wole miec w 1 miejscu - wygodniej sie tail robi na pliku ktory ma tylko to co mnie interesuje hehe.
Memleaks to inna bajka - ogolnie warto wiedziec jak takie cos sie trafia.
Jesli potrzebujesz wyswietlac bledy w tresci strony (w aplikacji nad ktora pracujesz i nie chce ci sie zagladac do loga) to mozna to ustawic o ile pamietam przez php jako error_reporting(N) czy jakos tak, gdzie N to cyfra oznaczajaca poziom logowania - 0 to logowanie wylaczone (i tak powinno byc w kodzie produkcyjnym ktory wisi na sieci dla otwartej publicznosci).
To tyle...