![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 59 Pomógł: 0 Dołączył: 16.03.2004 Ostrzeżenie: (10%) ![]() ![]() |
W zasadzie to bardziej teoretyczne pytanie aniżeli praktyczne. Chodzi mi o zagrozenia jakie niesie niezabezpieczenie formularza przed mozliwoscia wywolania eval(). Jezeli moglbym prosic o jakies konkretne przyklady i moze jakies odnosniki info "o bezpieczenstwie formularzy".
|
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 136 Pomógł: 0 Dołączył: 2.01.2004 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
Cytat Chodzi mi o zagrozenia jakie niesie niezabezpieczenie formularza przed mozliwoscia wywolania eval().
Niewiem co masz na myśli, ale normalnie użytkownik nie jest w stanie w żaden sposób sprawić, że jakakolwiek treść wysłana do przeglądarki (czy to z formularza, z urla czy z ciastek) - została wykonana w skrypcie poprzez funkcję eval() - chyba że zrobisz coś takiego: [php:1:532e036852] <?php eval($_GET{'zmienna'}); ?> [/php:1:532e036852] No ale czegoś takiego NIE MOŻNA ROBIĆ. Jeśli już chcesz w jakiś sposób użyć danych wysłanych przez przeglądarkę w kodzie php, który chcesz wykonać to musisz te dane dokładnie sprawdzić. Na przykład, jeśli za pomocą skryptu php generujesz listing katalogów i chcesz pozwolić użytkownikowi na podróżowanie po podkatalogach - to ja bym proponował zrobić to tak: [php:1:532e036852] <?php // katalog powyzej ktorego nie bedzie mozna wyjsc - taki chroot ![]() define(BASE_DIR,'/usr/local/'); // jesli mamy kropke w nazwie katalogu to moze oznaczac, ze gosciu probuje nas wykiwac ![]() if(strstr('.',$_GET{'sciezka'})) die("spadaj"); // jesli pierwszy znak to slash to jest to odwolanie w odniesieniu do glownego katalogu systemu i wtedy tez mowimy papa if(substr($_GET{'sciezka'},0,1)) die("spadaj"); // no i teraz juz mozemy bezpiecznie zbudowac sciezke ktora za chwile wyslitujemy $sciezka=BASE_DIR.'/'.$_GET{'sciezka'}; system("ls -al $sciezka"); ?> [/php:1:532e036852] Powyższy przykład zakłada, że prośby zmiany listowanego katalogu przychodzą do serwera w postaci np: 'podkatalog/katalog', 'podkatalog', podkatalog/drugipodkatalog/trzecipodkatalog' i przchodzą w zmiennej "sciezka" przekazanej metodą GET. [b]Nigdy nie używaj danych przychodzących z zewnątrz bez wcześniejszego ich sprawdzenia pod kątem niechcianej zawartości !!! To taki mocno toporny przykład ![]() -------------------- |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 445 Pomógł: 0 Dołączył: 21.12.2003 Skąd: Tomaszów Lubelski Ostrzeżenie: (10%) ![]() ![]() |
Dodam, że przed wyświetleniem informacji na stronie, które mogą być podejrzewane o niechciany kod, który mógłby dużo "namieszać" na stronie zalecane jest użycie htmlspecialchars() lub strip_tags().
-------------------- Don't worry, be happy!
Gadu-Gadu: 1687784 Darmowe komponenty na stronę WWW - licznik księga gości shoutbox chat kalendarz data godzina imieniny IP host przeglądarka odwiedzającego ankieta sonda |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 59 Pomógł: 0 Dołączył: 16.03.2004 Ostrzeżenie: (10%) ![]() ![]() |
Czy jest mozliwosc wyswietlenia, zapisania czy w jakis inny sposob podgladniecia kodu zrodlowego?
|
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 445 Pomógł: 0 Dołączył: 21.12.2003 Skąd: Tomaszów Lubelski Ostrzeżenie: (10%) ![]() ![]() |
Kodu źródłowego strony HTML oczywiście. Natomiast kodu php nie da się, bo jest on już "wygenerowany" przez serwer i przeglądarka otrzymuje gotowy kod bez php.
-------------------- Don't worry, be happy!
Gadu-Gadu: 1687784 Darmowe komponenty na stronę WWW - licznik księga gości shoutbox chat kalendarz data godzina imieniny IP host przeglądarka odwiedzającego ankieta sonda |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 06:25 |