Kod menu głównego PHP piękne przykłady. §2

Uruchom pobrany plik podwójne kliknięcie(Muszę mieć maszyna wirtualna ).

3. Anonimowość podczas sprawdzania witryny pod kątem wstrzyknięcia SQL

Konfigurowanie Tora i Privoxy w Kali Linux

[Sekcja w przygotowaniu]

Konfigurowanie Tora i Privoxy w systemie Windows

[Sekcja w przygotowaniu]

Ustawienia proxy we wstrzykiwaniu jSQL

[Sekcja w przygotowaniu]

4. Sprawdzenie witryny pod kątem iniekcji SQL za pomocą jSQL Injection

Praca z programem jest niezwykle prosta. Wystarczy wpisać adres strony internetowej i nacisnąć ENTER.

Poniższy zrzut ekranu pokazuje, że witryna jest podatna na trzy rodzaje zastrzyków SQL (informacja o nich jest wskazana w prawym dolnym rogu). Klikając na nazwy zastrzyków możesz zmienić zastosowaną metodę:

Wyświetlono nam już także istniejące bazy danych.

Możesz wyświetlić zawartość każdej tabeli:

Zazwyczaj najciekawszą rzeczą w tabelach są poświadczenia administratora.

Jeśli będziesz mieć szczęście i odnajdziesz dane administratora, to jest za wcześnie na radość. Musisz jeszcze znaleźć panel administracyjny, w którym możesz wprowadzić te dane.

5. Wyszukaj panele administracyjne za pomocą jSQL Injection

W tym celu przejdź do kolejnej zakładki. Tutaj wita nas lista możliwych adresów. Możesz wybrać jedną lub więcej stron do sprawdzenia:

Wygoda polega na tym, że nie trzeba korzystać z innych programów.

Niestety nieostrożni programiści przechowujący hasła w otwarta forma, niewiele. Dość często w wierszu hasła widzimy coś takiego

8743b52063cd84097a65d1633f5c74f5

To jest skrót. Możesz go odszyfrować za pomocą brutalnej siły. I… Wstrzyknięcie jSQL ma wbudowany brute-forcer.

6. Mieszanie brutalnej siły przy użyciu wtrysku jSQL

Niewątpliwą wygodą jest to, że nie trzeba szukać innych programów. Istnieje wsparcie dla wielu najpopularniejszych skrótów.

To nie jest najwięcej najlepsza opcja. Aby zostać guru w dekodowaniu skrótów, zaleca się książkę „” w języku rosyjskim.

Ale oczywiście, gdy nie ma pod ręką innego programu lub nie ma czasu na naukę, bardzo przydatny będzie jSQL Injection z wbudowaną funkcją brute force.

Istnieją ustawienia: możesz ustawić, które znaki mają być zawarte w haśle, zakres długości hasła.

7. Operacje na plikach po wykryciu zastrzyków SQL

Oprócz operacji na bazach danych - ich odczytywania i modyfikowania, w przypadku wykrycia wstrzyknięć SQL, można wykonać następujące operacje na plikach:

  • czytanie plików na serwerze
  • wgranie nowych plików na serwer
  • przesyłanie powłok na serwer

A wszystko to zaimplementowane w jSQL Injection!

Istnieją ograniczenia - serwer SQL musi mieć uprawnienia do plików. Ci rozsądni administratorzy systemu są niepełnosprawni i mają do nich dostęp system plików nie uda się tego zdobyć.

Obecność uprawnień do plików można dość łatwo sprawdzić. Przejdź do jednej z zakładek (odczyt plików, utworzenie powłoki, wgranie nowego pliku) i spróbuj wykonać jedną z określonych operacji.

Nadal bardzo ważna uwaga- musimy wiedzieć dokładnie absolutna ścieżka do pliku, z którym będziemy pracować - inaczej nic nie będzie działać.

Spójrz na poniższy zrzut ekranu:

Na każdą próbę operacji na pliku otrzymujemy następującą odpowiedź: Brak uprawnień FILE(brak uprawnień do plików). I nic tu nie da się zrobić.

Jeśli zamiast tego pojawi się inny błąd:

Problem z zapisem do [nazwa_katalogu]

Oznacza to, że niepoprawnie podałeś ścieżkę bezwzględną, w której chcesz zapisać plik.

Aby odgadnąć ścieżkę absolutną, musisz przynajmniej ją znać system operacyjny na którym działa serwer. Aby to zrobić, przejdź do zakładki Sieć.

Taki zapis (linia Win64) daje nam podstawy przypuszczać, że mamy do czynienia z systemem operacyjnym Windows:

Keep-Alive: limit czasu=5, max=99 Serwer: Apache/2.4.17 (Win64) PHP/7.0.0RC6 Połączenie: Metoda Keep-Alive: HTTP/1.1 200 OK Długość zawartości: 353 Data: piątek, 11 grudnia 2015 11:48:31 GMT X-Powered-By: PHP/7.0.0RC6 Typ zawartości: tekst/html; zestaw znaków=UTF-8

Tutaj mamy trochę Uniksa (*BSD, Linux):

Kodowanie transferu: fragmentaryczne Data: piątek, 11 grudnia 2015 r. 11:57:02 GMT Metoda: HTTP/1.1 200 OK Keep-Alive: timeout=3, max=100 Połączenie: keep-alive Typ zawartości: tekst/html X- Obsługiwane przez: PHP/5.3.29 Serwer: Apache/2.2.31 (Unix)

A tutaj mamy CentOS:

Metoda: HTTP/1.1 200 OK Wygasa: czwartek, 19 listopada 1981 08:52:00 GMT Set-Cookie: PHPSESSID=9p60gtunrv7g41iurr814h9rd0; ścieżka=/ Połączenie: keep-alive X-Cache-Lookup: MISS z t1.hoster.ru:6666 Serwer: Apache/2.2.15 (CentOS) X-Powered-By: PHP/5.4.37 X-Cache: MISS z t1.hoster.ru Kontrola pamięci podręcznej: brak przechowywania, brak pamięci podręcznej, konieczność ponownej weryfikacji, sprawdzanie po = 0, sprawdzanie wstępne = 0 Pragma: brak pamięci podręcznej Data: piątek, 11 grudnia 2015 12:08:54 GMT Kodowanie transferu: fragmentaryczne Typ zawartości: tekst/html; zestaw znaków=WINDOWS-1251

W Windows typowy folder witryn to C:\Serwer\dane\htdocs\. Ale tak naprawdę, jeśli ktoś „pomyślał” o stworzeniu serwera w systemie Windows, to najprawdopodobniej ta osoba nie słyszała nic o przywilejach. Dlatego powinieneś rozpocząć próbę bezpośrednio z katalogu C:/Windows/:

Jak widać, wszystko poszło dobrze za pierwszym razem.

Ale same powłoki jSQL Injection budzą moje wątpliwości. Jeśli masz uprawnienia do plików, możesz łatwo przesłać coś za pomocą interfejsu internetowego.

8. Zbiorcze sprawdzanie witryn pod kątem zastrzyków SQL

I nawet ta funkcja jest dostępna w jSQL Injection. Wszystko jest niezwykle proste - pobierz listę witryn (możesz zaimportować z pliku), wybierz te, które chcesz sprawdzić i kliknij odpowiedni przycisk, aby rozpocząć operację.

Wniosek z wtrysku jSQL

Wstrzykiwanie jSQL jest dobre, potężne narzędzie do wyszukiwania, a następnie wykorzystania zastrzyków SQL znalezionych na stronach internetowych. Jego niewątpliwe zalety: łatwość obsługi, wbudowane funkcje z tym związane. jSQL Injection może być najlepszym przyjacielem początkującego przy analizie stron internetowych.

Wśród niedociągnięć wymieniłbym brak możliwości edycji baz danych (wg co najmniej Nie znalazłem tej funkcji). Podobnie jak wszystkie instrumenty z interfejs graficzny, jedną z wad tego programu można przypisać niemożności użycia go w skryptach. Niemniej jednak w tym programie możliwa jest pewna automatyzacja - dzięki wbudowanej funkcji kontrola masy witryny.

Program jSQL Injection jest znacznie wygodniejszy w użyciu niż sqlmap. Ale sqlmap obsługuje więcej typów Wstrzykiwanie SQL, ma opcje pracy z zaporami plików i kilkoma innymi funkcjami.

Konkluzja: wtrysk jSQL - najlepszy przyjaciel początkujący haker.

Pomoc dla tego programu w Encyklopedii Kali Linux znajdziesz na tej stronie: http://kali.tools/?p=706

23 kwietnia 2017 r

Na poprzednich lekcjach przyglądaliśmy się przykładom tego, czym są tablice. W tym poradniku w praktyce wykorzystamy tablice do stworzenia menu na stronie internetowej.

Dlaczego są wygodniejsze niż zwykłe tagi HTML?

Cóż, powiedzmy, że nasza witryna ma 100 stron, z których każda ma to samo menu. I nagle musieliśmy zmienić pozycje menu. Używając tylko HTML, będziemy musieli dokonać zmian na 100 stronach witryny, a to dużo. Dlatego w takich sytuacjach z pomocą przychodzi nam PHP. Wystarczy jednorazowa zmiana pozycji menu w jednym pliku.

Teraz chodźmy.

NA hosting lokalny w folderze " domeny utwórz folder o nazwie „ szyk- menu. lokalny”.

W tym folderze tworzymy cztery pliki: indeks. php, o. php, kontakt. php I menu. php.

!!! Składnia pliku powinna byćPHP.

W pliku Index.php piszemy prosty HTML rama.




charset="utf-8" >



dom


włączać(„menu.php” );
?>

Skopiuj ten kod do plików about.php i contact.php. Zmieniamy jedynie nazwy stron w tagu

.

Piszemy kod dla menu.

W pliku menu.php napisz tablicę asocjacyjną.

$menu = szyk (
"indeks "=> "indeks.php",
"o" => "about.php",
"Łączność" => "kontakt.php"
);
?>

Poniżej użycie Tagi HTML pisanie menu.

W przeglądarce zobaczymy zwykłe menu w formie listy.

Klikając dowolną pozycję menu, przejdziemy do odpowiedniej strony, a menu będzie na wszystkich stronach.

Teraz skomplikujmy zadanie. Usuwamy wszystko z pliku menu.php I...

Piszemy tablicę wielowymiarową.




charset="utf-8" >
<span>Użycie tablicy do wyświetlenia menu na stronie internetowej.</span>


$menu = szyk (
szyk("połączyć" => "Strona główna", "href"=> "index.php"),
szyk("połączyć" => "O nas", "href"=> "about.php"),
szyk("połączyć" => "Kontakty", "href"=> "kontakt.php")
);
?>



A na ostatnim etapie...

Rysowanie menu za pomocą pętli dla każdego.

Usuwanie listy z pliku menu.php

    i zamiast tego napisz następujący kod.

    Echo"

      " ;
      dla każdego($menu Jak$przedmiot)(
      Echo "
    • ($przedmiot)
    • " ;
      }

      W przeglądarce zobaczymy ten sam wynik.

      Aby zmienić pozycje menu, po prostu zmień je w pliku menu.php tylko raz.

      Jeśli interesuje Cię odpowiedź na pytanie jak stworzyć menu strony internetowej to dobrze trafiłeś.

      Przyjrzymy się stworzeniu dynamicznego menu w PHP, napisanego specjalnie dla manekinów programowania, a także dla tych, którzy są jeszcze w zbiorniku.

      Lekcja 3. Tworzenie dynamicznego menu w php dla strony internetowej - dla opornych

      Stwórzmy przyszły układ naszej strony internetowej. Aby to zrobić, narysujemy w Photoshopie super piękną stronę internetową i pokroimy ją na kawałki. Wyobraźmy sobie, że nagłówek, logo, menu i stopka nie są napisane słowami, jak w tym przykładzie, ale są to elegancko i kolorowo zaprojektowane elementy witryny.

      Stwórzmy dla przykładu trzy strony i nazwijmy je Sekcja 1, Sekcja 2, Sekcja 3

      Ten tekst będzie inny dla różnych stron, ale nie będziemy się tym przejmować i pozostawimy go bez zmian na wszystkich stronach.

      Zacznijmy od tworzenia strony internetowej w języku PHP.

      1. Wybierz bloki nagłówka, logo, menu, stopki do osobnych plików z rozszerzeniem php lub html

      nagłówek.html

      logo.html

      menu.html

      stopka.html

      Dodajmy plik z tym tekstem, abyśmy mogli go zobaczyć na wszystkich stronach. Zadzwońmy do niego tekst.html

      Notatka. Od tej chwili dalsze zapisy będę prowadzić bezpośrednio w teczce. tekst.html

      2. Stwórzmy szablon naszej strony internetowej w języku PHP.

      Aby to zrobić, zrobimy prostą rzecz - zapiszemy prawdziwy plik, ale z rozszerzeniem php i usuniemy całą zawartość tekstową. Może nie jest to profesjonalne, ale zrozumiałe, ale później wszystko skomplikujemy. Teraz najważniejsze jest zrozumienie zasady układu.

      3. Teraz nie potrzebujemy już pliku template.html.

      Dzięki niemu mamy wyobrażenie o tym jak będzie wyglądać nasza strona.

      4. Nasz szablon to plik template.php

      Teraz wstawimy do niego wszystkie elementy witryny za pomocą polecenia include.

      5. Stwórzmy trzy strony, tak jak mieliśmy to zrobić na początku.

      Sekcja 1, zadzwońmy 1.php

      Sekcja 2, zadzwońmy 2.php

      Sekcja 3, zadzwońmy 3.php

      Aby to zrobić, możesz użyć najprostszego polecenia Zapisz jako...

      Pozwólcie, że wyjaśnię najmłodszym: otwórz plik szablon.php, następnie naciśnij Zapisz jako... i zapisz go pod nazwą 1.php, powtórz procedurę i zapisz strony witryny po kolei 2.php, 3.php

      Skończyło się na 3 stronach z tym samym projektem. Po prostu wklej go zamiast pliku tekst.html inny, uzupełnij różnymi obrazkami lub kodami HTML, skryptami, a zawartość każdej strony będzie niepowtarzalna.

      Uwaga!

      Jeśli plik nie został utworzony indeks.php dla strony głównej, następnie w przeglądarce wpisując adres witryny, nie zobaczymy samej witryny, a jedynie strukturę katalogów (listę folderów).

      Możesz zajrzeć do Denver i przekonać się sam. Naprawmy sytuację - utwórz plik indeks.php i zadzwońmy bez zbędnych ceregieli dom. W tym samym czasie utwórzmy plik tekst-home.html i za pomocą polecenia włączać wstaw go na nowo utworzoną stronę główną serwisu.

      6. Jak wyświetlić stronę internetową w php?

      Po prostu nie zobaczymy, co się stało. To nie jest już szablon z rozszerzeniem HTML.

      Ale to też nie jest problem. Potrzebujemy własnego, tj. serwer lokalny na Twoim komputerze. Aby to zrobić, zainstalujemy Denver i obejrzymy wynik naszej pracy w przeglądarce bez konieczności łączenia się z Internetem.

      Teraz to porządek. Wpisałem adres strony i zobaczyłem wszystko, co właśnie powstało w normalnej formie z projektem.

      Zajmijmy się teraz menu PHP witryny.

      1. Otwórz plik menu.html i zamień sekcje 1, 2 i 3 w linki na stronie. Linki w PHP tworzone są na różne sposoby.

      Naszym zadaniem jest nauczyć się czuć stronę stworzoną w PHP. Dlatego będziemy tworzyć linki jak na zwykłej stronie statycznej Sekcja 1 itd.

      Bardzo podoba mi się ten proces tworzenia linków w Macromedia Dreamweaver. Miej czas na zbieranie plonów OK i napić się kawy.

      2. Jak sprawić, aby link w menu był nieaktywny, jeśli odwiedzający znajduje się na tej stronie.

      Wygodniejsze będzie dla odwiedzającego poruszanie się po witrynie, wiedząc, na której stronie się znajduje.

      Jeśli wykonałeś wszystkie kroki ściśle punkt po punkcie, zobaczysz, że wszystkie linki w menu są zawsze aktywne. Jak to naprawić?

      Na początek przypomnijmy sobie definicję tego, co to jest Instrukcje warunkowe

      – ma to miejsce wtedy, gdy jakaś akcja jest wykonywana lub nie, w zależności od warunków.

      Wykonajmy następujące czynności:

      • Będziemy potrzebować zmienne i jeden operatora warunkowego:

      if ($master == „Główny”)//ten warunek. Jeśli zostanie wykonany, to w tym miejscu menu za pomocą polecenia echo wstawiane są zwykłe znaczniki HTML, które wyświetlają napis „Strona główna”.

      Echo "

      dom

      ";

      w przeciwnym razie// oznacza „inaczej” - co się stanie, jeśli warunek nie zostanie spełniony. W takim przypadku, jeśli warunek nie zostanie spełniony, napis „Strona główna” będzie linkiem prowadzącym do strony głównej.

      Echo "

      dom

      ";

      • Wymyśliliśmy warunek, ale tak sprawdź zmiennąmusisz o to zapytać.

      W tym celu na wszystkich stronach umieścimy następujące bloki kodu:

      $master = "Główny";

      $master = "Sekcja 1";

      $master = "Sekcja 2";

      $master = "Sekcja 3";

      Jak widać, każda strona ma swój własny kod.

      Zatem nasze praktyczne kroki tworzenia menu PHP będą następujące:

      1) Otwieranie pliku indeks.php

      i wklej kod

      $master = "Główny";

      do miejsca, w którym wstawisz kod wyświetlający samo menu witryny dołącz „menu.html”;
      ?>

      2) Otwieranie pliku menu.html i wstaw kod z warunkiem zamiast prostego linku HTML do strony głównej.

      Patrzymy w przeglądarkę i podziwiamy! Jeśli przejdziemy na stronę główną, link nie będzie już aktywny!

      3) Powtórz punkty 1 i 2 ze stronami 1.php, 2.php, 3.php

      Powtórzenie 1:

      1) Otwórz plik 1.php i wstaw przed kodem wyświetlającym blok menu z podaną zmienną

      $master = "Sekcja 1";

      2) Otwórz plik menu.html i wstaw kod z warunkiem zamiast prostego linku Sekcja 1, wprowadzając następujące zmiany:

      if ($master == „Sekcja 1”)//ten warunek. Jeśli zostanie wykonany, to w tym miejscu menu za pomocą polecenia echo wstawiane są zwykłe znaczniki HTML, które wyświetlają napis „Sekcja 1”.

      Echo "

      Sekcja 1

      ";

      w przeciwnym razie// oznacza „inaczej” - co się stanie, jeśli warunek nie zostanie spełniony. W takim przypadku, jeśli warunek nie zostanie spełniony, napis „Sekcja 1” będzie linkiem prowadzącym do strony głównej.

      Echo "

      Sekcja 1

      ";

      Cud się powtórzył! Teraz, jeśli jesteśmy na stronie Sekcja 1, link w menu jest nieaktywny.

      Powtarzanie jest matką nauki! Albo dla tych w zbiorniku! Ponownie

      Powtórzenie 2

      1) Otwórz plik 2.php i wklej kod.

      $master = "Sekcja 2";

      2) Otwórz ponownie plik menu.html i wklej kod z warunkiem

      if ($master == „Sekcja 2”)//ten warunek. Jeśli zostanie wykonany, to w tym miejscu menu za pomocą polecenia echo wstawiane są zwykłe znaczniki HTML, które wyświetlają napis „Sekcja 2”.

      Echo "

      Sekcja 2

      ";

      w przeciwnym razie// oznacza „inaczej” - co się stanie, jeśli warunek nie zostanie spełniony. W takim przypadku, jeśli warunek nie zostanie spełniony, napis „Sekcja 2” będzie linkiem prowadzącym do strony głównej.

      Echo "

      Sekcja 2

      ";

      Powtórzenie 3

      1) Otwarcie plik 3.php i ustaw zmienną.

      $master = "Sekcja 3";

      2) W pliku menu.html zamiast linku wstawiamy kod z warunkiem Sekcja 3, zmiany są następujące:

      if ($master == „Sekcja 3”)//ten warunek. Jeśli zostanie wykonany, to w tym miejscu menu za pomocą polecenia echo wstawiane są zwykłe znaczniki HTML, które wyświetlają napis „Sekcja 3”.

      Echo "

      Sekcja 3

      ";

      w przeciwnym razie// oznacza „inaczej” - co się stanie, jeśli warunek nie zostanie spełniony. W takim przypadku, jeśli warunek nie zostanie spełniony, napis „Sekcja 3” będzie linkiem prowadzącym do strony głównej.

      Echo "

      Sekcja 3

      ";

      Konkluzja: zamiast linków w tego typu menu

      dom


      Sekcja 1

      Sekcja 2


      Sekcja 3

      Ta lekcja o php została napisana w odpowiedzi na liczne prośby odwiedzających witrynę i jest praktycznym przewodnikiem do nauki tworzenia dynamicznego menu dla witryny w php.

      Ściągawka następnego webmastera powie Ci, jak stworzyć unikalne tytuły, opisy i słowa kluczowe dla każdej strony w PHP.

      Możesz pobrać archiwum ze wszystkimi plikami szablonów witryny i menu php. Zalecane dla osób rozpoczynających przygodę z programowaniem.

      Jeśli jesteś gotowy, aby poważnie studiować PHP, trudno jest znaleźć lepszy kurs wideo od Popova. Ma duże doświadczenie i dobry styl.

      ]]> ]]>

      Ponieważ eksponuje zawartość modułu menu.php. Poniżej zaprezentujemy własne opracowanie menu w języku PHP, które zostało napisane od podstaw w notatniku.

      Ten kod będzie szczególnie przydatny w przypadku witryn dynamicznych, które mają niestandardowe silniki. Zaproponuję dwie opcje kodu, które różnią się niewielkimi różnicami (różnice zostaną wyjaśnione później).

      Na początek podam przybliżoną strukturę witryny, dla której odpowiednie jest to menu. Struktura witryny powinna wyglądać następująco (widok klasyczny):

      /index.html /razdel_1/ /razdel_1/artykuły_1.html /razdel_1/artykuły_2.html ... /razdel_2/ /razdel_2/artykuły_1.html /razdel_2/artykuły_2.html ... ... ... /razdel_N/artykuły_2 .html

      Witryna może również zawierać podsekcje dla sekcji:

      /razdel_1/podzaderl_1/ /razdel_1/podzaderl_1/articles_1.html /razdel_1/podzaderl_1/articles_2.html ... /razdel_1/podzaderl_2/articles_1.html /razdel_1/podzaderl_2/articles_2.html

      Ta struktura będzie działać również w naszym menu, z niewielkimi różnicami.

      Sugeruję utworzenie osobnego pliku dla menu w php. Na przykład menu.php byłoby świetną nazwą dla takiego pliku. Aby zaimplementować menu, udostępniono również styl menu w CSS, który natychmiast czyni go mniej lub bardziej pięknym. Oczywiście ten styl jest podany wyłącznie w celach informacyjnych, ponieważ projekty witryn są bardzo różne.

      Kod do stylizacji menu w CSS:

      .menu ( wysokość:42px; dopełnienie:0 0 0 16px; tło:url(images/spacer.png) powtórz; ) .menu li ( display:block; float:left; ) .menu li.active ( tło: #000011 ; ) .menu a ( kolor: #FFF; wyświetlacz: blok; wysokość linii: 42 pikseli; dekoracja tekstu: brak; dopełnienie: 0 14 pikseli; ) .menu a: najechanie ( tło: url (images/spacer.png) powtórz ;)

      Przyjrzyjmy się teraz pierwszej opcji implementacji menu w PHP, która jest nieco uproszczona.

      Pierwsza wersja kodu menu w PHP

      \n"; dla ($i=0;$i ": "
    • "; Echo " ".$array_menu[$i]["nazwa"]."
    • \n"; ) echo "
    "; ?>

    Menu można podzielić na dwie części. Pierwsza zawiera tablicę informacyjną $array_menu, która zawiera nazwy naszych sekcji wraz z linkami do sekcji. Istnieje możliwość wprowadzenia tych danych do bazy danych mySQL, ale nie ma to szczególnego sensu, ponieważ próbka jest bardzo mała, więc nie wpłynie to na szybkość pracy.

    Druga część zawiera wyjście menu za pomocą pętli for. Cykl porównuje adres witryny z adresem z tablicy $array_menu. Jeśli jest dopasowanie, wyświetlamy kolejną sekcję menu ze specjalną aktywną klasą:

  • , inaczej po prostu
  • . Dzięki temu możemy wyróżnić kolorem część menu, w której znajduje się użytkownik. Moim zdaniem jest to niezbędna rzecz w przypadku każdej witryny, aby użytkownik mógł zrozumieć, w której sekcji się znajduje.

    Kolejność w tablicy zostanie zachowana po wyświetleniu menu na stronie. Oznacza to, że tablicę należy wypełnić w kolejności, w jakiej menu powinno być wyświetlane.

    Notatka:
    Jeżeli adresy URL (adresy) nagłówków sekcji wyglądają następująco:
    /Sekcja 1
    lub tak
    /razdel_1/nazvanie_razdela.html
    następnie musisz napisać dokładne dopasowanie w array_menu:
    $array_menu[$i]["url"]="/razdel_1"
    lub w drugim przypadku:
    $array_menu[$i]["url"]="/razdel_1/nazvanie_razdela.html";

    Jak działa pierwsza opcja menu?
    Podświetla menu tylko wtedy, gdy znajdujesz się pod adresem nagłówka sekcji. Przykładowo jeśli adres strony to /razdel_1/articles_1.html to menu nie zostanie w żaden sposób podświetlone.

    Druga wersja kodu jest zmodyfikowaną wersją pierwszej i zapewnia możliwość podświetlania menu nawet w artykułach, które znajdują się w sekcjach.

    Druga wersja kodu menu w PHP

    "; dla ($i=0;$i ": "
  • "; echo "".$array_menu[$i]["tytuł"]."
  • "; ) else ( echo ($URL) == ($array_menu[$i]["url"]) ? "
  • ": "
  • "; echo "".$array_menu[$i]["tytuł"]."
  • "; ) ) Echo "
"; ?>

Właśnie temu się teraz przyjrzymy. I tak zadaniem jest wykonanie pionowego menu w formie listy rozwijanej.

Jak można to zaimplementować w PHP? Bardzo prosta! Na przykład mamy plik indeks.php, które w zależności od wybranej sekcji z listy rozwijanej powinny wyświetlać odpowiednią treść na stronie. Jest to realizowane w następujący sposób:

1. Tworzymy pliki w formacie .html, które będą zawierać treść niezbędną do wydruku.

2. Tworzymy (piszemy) w skrypcie Index.php warunki niezbędne do wyświetlenia odpowiednich informacji.

3. Powstały skrypt rozpatrujemy pod kątem bezpieczeństwa wykonywanego skryptu.

No cóż, wygląda na to, że teorię mamy już za sobą, przejdźmy do praktyki. Najpierw tworzymy strony statyczne w formacie .html, które będą zawierać niezbędne informacje. Możesz tam pisać co chcesz :) W rezultacie powinniśmy otrzymać co najmniej dwa pliki pierwszy.html i drugi.html , abyśmy mogli stworzyć ich tyle, ile chcemy, gdy już zrozumiemy podstawowy algorytm jak działa kod.

Aby wyświetlić listę rozwijaną w pliku indeks.php Tworzymy formularz HTML, a poniżej piszemy skrypt PHP o następującej treści:



Menu PHP


Rozwijane menu w PHP












if (isset ($_GET ["gdzie" ]))
{
if ($_GET ["gdzie" ]==1 )
$plik = "pierwszy.html" ;
if ($_GET ["gdzie" ]==2 )
$plik = "drugi.html" ;
dołącz($plik);
}
?>


Teraz kod menu rozwijanego jest gotowy, a najciekawsze jest to, że będzie działać normalnie, ale z punktu widzenia bezpieczeństwa jest podatny na ataki.

Luka w tym skrypcie polega na tym, że zmienna $plik pozostaje niezainicjowana i w tym przypadku wartość automatycznie utworzonej zmiennej trafia bezpośrednio do funkcji włączać, a ona z kolei pomyślnie łączy ją (zmienną) i wyświetla na ekranie. I może to nie być tylko plik konfiguracyjny .htaccess. Aby zhakować ten skrypt, wystarczy przekazać parametrowi Where wartość nieprzewidzianą w kodzie, np. 3. A ponieważ skrypt nie przewiduje tej wartości, jest to po prostu zmienna $plik nie zostanie poddany inicjalizacji. Dlatego można mu nadać dowolną wartość poprzez ciąg adresu URL.

http://localhost/index.php?where=3&file=.htaccess

Ale to tak, mała dygresja od tematu. 😀

Rozwiązanie tego problemu jest dość proste, zmienne $plik wystarczy go zainicjować przed użyciem, tj. przypisać mu wartość domyślną.

Tutaj, jeśli do skryptu zostanie przekazany parametr Where, to zmienna zostanie poprawnie zainicjalizowana, w przeciwnym razie będzie po prostu pusta. Tak wyglądało menu rozwijane [bezpieczne] w PHP.

P.S. Tworząc scenariusze należy wziąć pod uwagę i odpowiednio wykluczyć wszystkie możliwe wektory ataku. Tylko w ten sposób można stworzyć projekt, który będzie spełniał zasady bezpieczeństwa i będzie pożądany przez Klienta. Do zobaczenia!