-
Serwer www z PHP
Szukam takiego php o ktorym prosto po zainstalowaniu bede mogl powiedziec "bezpieczne" nie pozwalajace na jakies dziwne numery, z ograniczeniem dostepu do konkretnych katalogow, o zadnym exec nie moze byc mowy, ma to stac na xp,
chyba jest jakas alternatywa dla instalowania sobie zwyklego php, spedzenia kilku H nad ini, i cieglego obgryzanie paznokci czy aby na pewno jest bezpiecznie..
Ogolnie chetnie pochlone o instalowaniu i konfigurowaniu php na win :)
-
Dorwij apachę i dokumentację...
-
XAMPP - jest tez wersja portable co jest dosc wygodne... zobacz www.portableapps.com.
-
A ja polecam APACHA- jest taki moduł dodatkowy, z PHP i zabezpieczeniem- bym musiał poszukać... jak znajdę to wrzucę:D:D:D
-
XAMPP to apache z php, mysql, perl i co tam jeszcze chcesz - budowa modulowa, wersja 'portable' nie wymaga instalacji - rozpakowac i uzywac :)
-
Serwer www juz wybralem, polecony przez "phprulez", sprawdza sie doskonale,
zalety:
- uruchamia sie w 2 sekundy
- wielkosc instalki 300KB
- brak exploitow, moze dziurawe moze nie, ale script-kides mi nie grozne
i osobiste wzgledy:
- juz go mocno zakonfigurowalem, nie chce tego powtarzac z innym
Doinstalowalem php, nie wiem jak ustawic ini tak, aby ew. uzytkownik i jego skrypty mialy dostep np. tylko do konkretnego katalogu, zeby zablokowac shell execute, wiem ze proba wyrzezbienia tego na windownie jest karkolomnym zadaniem, nie wiem czy jest mozliwosc odpalenia tego webserera na jakims ograniczonym userze jednoczesnie siedzac sobie na adminie i normalnie uzywac komputera... to ze linux jest z zalozenia do tego przystosowany to wiem...
Jestescie w stanie polecic jakas bezpieczna konfiguracje php ini, nawet jesli mialo by sie to odbic na funkcjonalnosci?
-
Pod windows warto uzywac DropMyRights :) co ogranicza aplikacji dostep do maszyny - mowiac krotko zrzuca wszystkie niepotrzebne do pracy uprawnienia.
Co do php.ini:
Kod:
; open_basedir, if set, limits all file operations to the defined directory
; and below. This directive makes most sense if used in a per-directory
; or per-virtualhost web server configuration file. This directive is
; *NOT* affected by whether Safe Mode is turned On or Off.
open_basedir = /var/www/
; This directive allows you to disable certain functions for security reasons.
; It receives a comma-delimited list of function names. This directive is
; *NOT* affected by whether Safe Mode is turned On or Off.
disable_functions = exec, system, passthru, shell_exec, popen, phpinfo
;
; Misc
;
; Decides whether PHP may expose the fact that it is installed on the server
; (e.g. by adding its signature to the Web server header). It is no security
; threat in any way, but it makes it possible to determine whether you use PHP
; on your server or not.
expose_php = Off
Do tego jeszcze wylaczyc wypluwanie bledow do przegladarki, wlaczyc za to logowanie (domyslnie bledy ida do przegladarki aby bylo je widac... a nie do loga jak isc powinny).
-
Kod:
open_basedir, if set, limits all file operations to the defined directory
; and below. This directive makes most sense if used in a per-directory
; or per-virtualhost web server configuration file. This directive is
; *NOT* affected by whether Safe Mode is turned On or Off.
open_basedir = /var/www/
Hmm, nie qmam, basedir bedzie dzialac kiedy safe_mode jest on czy off??
W tym co napisales nie ma wzmianki zeby wlaczyc safe_mode, ale jak na moj rozum to niby po skoro basedir i shell execute bedzie ustawione...
Hmm, jakas podopwiedz gdzie znajde to wywalanie bledow php?
A moja sciezka bezwzgledna to nie zadne /var/www/ tylko D:\www, co z tym zrobic?
I jeszcze jedna sprawa, dalo by rade w ogole wylaczyc wykonywanie skryptow z innej sciezki niz taka a taka?
Kiedy ustawie base_dir = d:\zzz, to skrypt na ktorym mi zalezy robi:
Kod:
Warning: Call-time pass-by-reference has been deprecated; If you would like to pass it by reference, modify the declaration of [runtime function name](). If you would like to enable call-time pass-by-reference, you can set allow_call_time_pass_reference to true in your INI file. in D:\zzz\php\ok\m\index.php on line 131
Warning: session_start() [function.session-start]: open_basedir restriction in effect. File(C:\DOCUME~1\q\USTAWI~1\Temp\) is not within the allowed path(s): (d:\zzz) in D:\zzz\php\ok\m\classes\conf.php on line 13
Fatal error: session_start() [<a href='function.session-start'>function.session-start</a>]: Failed to initialize storage module: files (path: ) in D:\zzz\php\ok\m\classes\conf.php on line 13
Kiedy wylacze basedir to wyswietla sie tylko ten pierwszy blad, a skrypt dziala... o co tutaj chodzi?
//ok poprawilem o co prosileś ;) eMCe
-
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...
-
Ok, tnx za pomoc w tej materii
niestety mam pochodny problem
przekopiowalem zywcem skrypt php ktory na yoyo dziala bez zarzutu, a kiedy go wrzuce do siebie to wyswietla mi sie:
Kod:
Warning: Call-time pass-by-reference has been deprecated; If you would like to pass it by reference, modify the declaration of [runtime function name](). If you would like to enable call-time pass-by-reference, you can set allow_call_time_pass_reference to true in your INI file. in D:\zzz\php\ok\m\index.php on line 131
Warning: session_start() [function.session-start]: open_basedir restriction in effect. File(C:\DOCUME~1\q\USTAWI~1\Temp\) is not within the allowed path(s): (D:\) in D:\zzz\php\ok\m\classes\conf.php on line 13
Fatal error: session_start() [<a href='function.session-start'>function.session-start</a>]: Failed to initialize storage module: files (path: ) in D:\zzz\php\ok\m\classes\conf.php on line 13
Ten pierwszy blad wyswietla mi sie niezaleznie od basedir, te dwa kolejne znikaja i skrypt dziala kiedy basedir jest wylaczony, ale jesli ustawie nawet na d:\zzz to jest dupa....
Dlaczego ten glupek pyta o jakis c:\documentsands..., skoro na yoyo to dziala
Ze sie tak wyraze..... WTF?!