![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 728 Pomógł: 76 Dołączył: 12.06.2009 Ostrzeżenie: (0%) ![]() ![]() |
Piszę coś na kształt systemu CMS. Mój index.php wygląda tak jak poniżej. Chciałem się spytać czy header i footer są ładowane pojedynczo czy przy każdym wczytaniu innej strony ? Strony są wczytywane na zasadzie index.php?p=nazwa_strony
-------------------- gry flash online
Dobry hosting i tanie odnowienia domen firma: masternet. Zarabianie bez wysiłku na domenach bez ruchu: prolink. |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 1 657 Pomógł: 125 Dołączył: 29.04.2006 Ostrzeżenie: (0%) ![]() ![]() |
Nigdy, _nigdy_ tak nie rób.
Robiąc "foreach ($_GET as $key => $value) {$$key = $value;}" pozwalasz komukolwiek z zewnątrz "wstrzyknąć" dowolną zmienną jaką sobie zażyczy — a to potencjalnie może umożliwić atak. Co więcej, pozwalasz zaincludować dowolny plik jaki potencjalny atakujący chce. Tego też nie chcemy. --- Odnośnie pytania — robi się tak, że jest tylko jeden plik, który wyświetla treść (index.php) — i po prostu przekazuje się jaką podstronę ma wyświetlić. Oczywiście robi się to "trochę" inaczej niż Ty ![]() -------------------- |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 728 Pomógł: 76 Dołączył: 12.06.2009 Ostrzeżenie: (0%) ![]() ![]() |
.radex może jakiś przykład jak to się robi
![]() -------------------- gry flash online
Dobry hosting i tanie odnowienia domen firma: masternet. Zarabianie bez wysiłku na domenach bez ruchu: prolink. |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 4 291 Pomógł: 829 Dołączył: 14.02.2009 Skąd: łódź Ostrzeżenie: (0%) ![]() ![]() |
Nigdy, _nigdy_ tak nie rób. Robiąc "foreach ($_GET as $key => $value) {$$key = $value;}" pozwalasz komukolwiek z zewnątrz "wstrzyknąć" dowolną zmienną jaką sobie zażyczy — a to potencjalnie może umożliwić atak. Co więcej, pozwalasz zaincludować dowolny plik jaki potencjalny atakujący chce. Tego też nie chcemy. --- Odnośnie pytania — robi się tak, że jest tylko jeden plik, który wyświetla treść (index.php) — i po prostu przekazuje się jaką podstronę ma wyświetlić. Oczywiście robi się to "trochę" inaczej niż Ty ![]() Powiedzmy, że masz link index.php?podstrona=kontakt Wykorzystujesz wtedy $_GET, w skrócie jeśli zmienna podstronna = kontakt, includujesz dany plik. |
|
|
-mkdes- |
![]()
Post
#5
|
Goście ![]() |
Pliki ładuj raczej tak:
Kod include(dirname(__FILE__).'/includes/plik.php');
|
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 2 592 Pomógł: 445 Dołączył: 12.03.2007 Ostrzeżenie: (0%) ![]() ![]() |
Zrób sobie listę plików, którą możesz użyć. Do tego masz 2 podstawowe opcje:
1. Tworzysz sobie tą listę na stałe, z palca wpisując do tablicy nazwy plików. 2. Skanujesz katalog z podstronami w poszukiwaniu plików i dynamicznie dodajesz je do tablicy. Teraz pobierając nazwę podstrony z GET, sprawdzasz czy jest w tablicy dozwolonych, jeśli jest, to ją dołączasz, jeśli nie, to wyświetlasz domyślną lub stronę z błędem 404. -------------------- |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 728 Pomógł: 76 Dołączył: 12.06.2009 Ostrzeżenie: (0%) ![]() ![]() |
Jak na moje to ta linijka poniżej nie pozwala zainkludować żadnego pliku z zewnątrz włamywacz musiałby najpierw zgrać swój plik na serwer do podkatalogu view
Co do zmiennych to i tak według mnie można dowolnie manipulować przesłanym nagłówkiem i danymi POST / GET więc tu też zagrożenia nie widzę. -------------------- gry flash online
Dobry hosting i tanie odnowienia domen firma: masternet. Zarabianie bez wysiłku na domenach bez ruchu: prolink. |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 2 592 Pomógł: 445 Dołączył: 12.03.2007 Ostrzeżenie: (0%) ![]() ![]() |
Bardzo dobrze, że sprawdzasz czy plik istnieje, i podajesz konkretną ścieżkę, ale...
W Twoim przykładzie jest:
Co jeśli $p będzie ustawione na: 1. 'plik_ktory_nie_istnieje' ? 2. '../../../../etc/passwd', lub np.: '../../config/database.ini' ? -------------------- |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 728 Pomógł: 76 Dołączył: 12.06.2009 Ostrzeżenie: (0%) ![]() ![]() |
Odpowiadając na pytanie - nie załaduje nic oprócz header.php i footer.php bo nie spełni warunku ? Dla mnie takie coś jest ok, ewentualnie żeby było zgrabniej można dorzucić drugi warunek:
Jeśli chodzi o luki w bezpieczeństwie to ja żadnych nie widzę w tym schemacie.
-------------------- gry flash online
Dobry hosting i tanie odnowienia domen firma: masternet. Zarabianie bez wysiłku na domenach bez ruchu: prolink. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 08:17 |