Najlepszy samouczek PHP Walidacja formularza W 2024 r. W tym samouczku możesz dowiedzieć się PHP Walidacja formularza,pole tekstowe,przycisk radiowy,elementy formy,Formularz PHP potrzebne do spowodowania uwagę na to gdzie?,Jak uniknąć $ _SERVER [ "PHP_SELF"] wykorzystywaną?,Walidacja danych formularza wykorzystanie PHP,Przykłady,
W tym rozdziale omówiono sposób korzystania z naszych danych formularza PHP przedłożone przez walidacji klienta.
Mając do czynienia z formą PHP musimy wziąć pod uwagę bezpieczeństwo. W tym rozdziale pokażemy PHP Form Processing bezpieczeństwo danych, aby zapobiec hakerów i spamu musimy zabezpieczyć walidacji danych z formularza. |
Formularz HTML opisane w tej sekcji znajdują się następujące pola wejściowe: należy stosować dodatkowe pola tekstowe, przyciski radiowe i przedkłada przyciski:
Przede postaci zasady walidacji są następujące:
pole | zasady walidacji |
---|---|
nazwa | Koniecznością. + Zawierać tylko litery i spacje |
Koniecznością. + Musi być prawidłowy adres e-mail (w tym '@' i '.') | |
teren | Koniecznością. Jeśli występuje, musi zawierać poprawny adres URL |
uwaga | Koniecznością. Pole wprowadzania multi-line (pole tekstowe) |
płeć | Koniecznością. Musisz wybrać |
Po pierwsze, spójrzmy na zwykłego kodu formularza HTML:
"Nazwa", "E-mail" i "URL" pole jest elementem wprowadzania tekstu, "Uwagi" jest polem tekstowym. Kod HTML w następujący sposób:
“名字”: <input type="text" name="name"> E-mail: <input type="text" name="email"> 网址: <input type="text" name="website"> 备注: <textarea name="comment" rows="5" cols="40"></textarea>
"Gender" pole jest przycisk radiowy, kod HTML wygląda następująco:
性别: <input type="radio" name="gender" value="female">女 <input type="radio" name="gender" value="male">男
Kod HTML formularz w następujący sposób:
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
Użyj tego formularzamethod = "post" sposobu przekazywania danych.
Co to $ _SERVER [ ""] PHP_SELF zmienne? $ _SERVER [ "PHP_SELF"] jest zmienna globalna super, zwraca nazwę pliku aktualnie wykonywanego skryptu związaną z korzenia dokumentu. |
Tak, $ _SERVER [ "PHP_SELF"] wyśle dane formularza do bieżącej strony, zamiast skoków do innej strony.
Co to jest metoda htmlspecialchars ()? Funkcja htmlspecialchars () do kilku predefiniowanych znaków w jednostkach HTML. Predefiniowane znaki są:
|
$ _SERVER [ "PHP_SELF"] Zmienne mogą być wykorzystane przez hakerów!
Gdy hakerzy z wykorzystaniem cross-site scripting łącze HTTP do ataku, $ _ SERVER [ "PHP_SELF"] Zmienna zostanie wszczepiony w skrypcie serwera. Powodem jest to, że cross-site scripting plik wykonywalny jest dołączony do ścieżki tyłu, więc $ _SERVER [ "PHP_SELF"] ciąg będzie zawierać linki HTTP tył kodu JavaScript.
XSS znany również jako CSS (Script Cross-Site), cross-site scripting ataków. Złośliwy atakujący wstawić niebezpieczną stronę sieci Web w kodzie html, gdy użytkownik przegląda stronę, wbudowany Web wewnątrz kodu HTML zostaną zrealizowane, aby osiągnąć określony cel szkodliwego użytkownika. |
Podaj następujący plik formularz o nazwie "test_form.php":
<form method="post" action="<?php echo $_SERVER["PHP_SELF"];?>">
Teraz używamy URL do złożenia określonego adresu "test_form.php", jak pokazano w powyższym kodzie wprowadza się następujące zmiany:
<form method="post" action="test_form.php">
Robi się tak dobrze.
Jednakże, biorąc pod uwagę, użytkownik będzie wprowadź następujący adres w pasku adresu przeglądarki:
http://www.w3write.com/test_form.php/%22%3E%3Cscript%3Ealert('hacked')%3C/script%3E
Powyższy adres URL, będą interpretowane jako następującego kodu i wykonanie go:
<form method="post" action="test_form.php/"><script>alert('hacked')</script>
Dodawanie skryptu kod znacznika i dodać polecenie alertu. Po załadowaniu strony zostanie wykonany kod JavaScript (użytkownik pojawi się okienko pop-up). Jest to tylko prosty przykład ilustrujący zmienna PHP_SELF zostaną wykorzystane przez hakerów.
Należy pamiętać, że każdy kod JavaScript może zostać dodany do tagu <script>! Hakerzy mogą korzystać z tej strony w celu przekierowania do serwera na innej stronie, strona pliku z kodem, aby chronić złośliwy kod, kod może zostać zmodyfikowana w celu uzyskania użytkownikowi na zmienne globalne lub dane formularza.
$ _SERVER [ "PHP_SELF"] przez htmlspecialchars () funkcja, aby uniknąć eksploatowane.
tworzyć kod w następujący sposób:
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
htmlspecialchars () do niektórych podmiotów predefiniowanych znaków w HTML. Teraz, gdy użytkownik chce korzystać z zmienne PHP_SELF wyniki są przesyłane w następujący sposób:
<form method="post" action="test_form.php/"><script>alert('hacked')</script>">
Próba luka nie powiodło się!
Przede wszystkim złożyliśmy dane do funkcji użytkownika () jest przetwarzany przez htmlspecialchars PHP.
Kiedy używamy htmlspecialchars () funkcji, użytkownik próbuje przedstawić następujące pola tekstowe:
<script>location.href('http://www.w3write.com')</script>
Kod nie zostanie wykonany, ponieważ zostanie on zapisany jako kod HTML ewakuacyjnej w następujący sposób:
<script>location.href('http://www.w3write.com')</script>
Powyższy kod jest bezpieczny i może zostać wyświetlony komunikat lub wstawić na stronie.
Gdy użytkownik wysyła formularz, zrobimy dwie następujące rzeczy:
Niech te funkcje filtrowania napisane w zależności od naszej własnej definicji, można znacznie zwiększyć możliwości ponownego wykorzystania kodu.
Funkcja nazwana test_input ().
Teraz możemy test_input funkcji () w celu wykrycia wszystkich zmiennych w $ _POST, kod skryptu jest następująca:
Zauważ, że gdy wykonujemy powyższy skrypt poprzez $ _SERVER [ "REQUEST_METHOD"], aby wykryć, czy formularz jest składany. Jeśli REQUEST_METHOD jest POST, formularz zostanie złożony - dane będą weryfikowane. Jeśli formularz nie zostanie złożone pominie weryfikację i wyświetla pusty.
Za pomocą elementów wejściowych w powyższych przykładach są opcjonalne, nawet jeśli użytkownik nie wprowadzać żadnych danych mogą być wyświetlane niepoprawnie.
W następnym rozdziale opiszemy jak do sprawdzania poprawności danych wprowadzonych przez użytkownika.