Latest web development tutorials
×

PHP kurs

PHP kurs PHP krótkie wprowadzenie PHP zainstalować PHP gramatyka PHP zmienna PHP echo/print PHP Typy danych PHP stały PHP sznur PHP operatorzy PHP If...Else PHP Switch PHP szyk PHP Sortowanie tablicy PHP superglobalne PHP While krążenie PHP For krążenie PHP funkcja PHP Magiczne Zmienne PHP Przestrzenie nazw PHP Obiektowe

PHP forma

PHP forma PHP Uwierzytelnianie za pomocą formularzy PHP forma - wymagane pola PHP forma - Weryfikacja e-mail i adres URL PHP Kompletna wystąpienie formularza PHP $_GET zmienna PHP $_POST zmienna

PHP zaawansowane Tutorial

PHP Tablice wielowymiarowe PHP data PHP zawierać PHP plik PHP Prześlij plik PHP Cookie PHP Session PHP E-mail PHP bezpieczeństwo E-mail PHP Error PHP Exception PHP filtr PHP Filtr zaawansowany PHP JSON

PHP 7 Nowe funkcje

PHP 7 Nowe funkcje

PHP baza danych

PHP MySQL krótkie wprowadzenie PHP MySQL połączenie PHP MySQL Tworzenie bazy danych PHP MySQL Tworzenie tabeli danych PHP MySQL Należy wprowadzić dane PHP MySQL Wstawić wiele danych PHP MySQL Przygotowane sprawozdania PHP MySQL odczytać dane PHP MySQL WHERE PHP MySQL ORDER BY PHP MySQL UPDATE PHP MySQL DELETE PHP ODBC

PHP XML

XML Expat Parser XML DOM XML SimpleXML

PHP & AJAX

AJAX krótkie wprowadzenie AJAX PHP AJAX baza danych AJAX XML AJAX Wyszukiwanie w czasie rzeczywistym AJAX RSS Reader AJAX głosowanie

PHP Reference Manual

PHP Array PHP Calendar PHP cURL PHP Date PHP Directory PHP Error PHP Filesystem PHP Filter PHP FTP PHP HTTP PHP Libxml PHP Mail PHP Math PHP Misc PHP MySQLi PHP PDO PHP SimpleXML PHP String PHP XML PHP Zip PHP Timezones PHP Przetwarzanie obrazu PHP RESTful

PHP Walidacja formularza

W tym rozdziale omówiono sposób korzystania z naszych danych formularza PHP przedłożone przez walidacji klienta.


PHP Walidacja formularza

uwaga 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:

Zobacz Kod >>

Przede postaci zasady walidacji są następujące:

pole zasady walidacji
nazwa Koniecznością. + Zawierać tylko litery i spacje
E-mail 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:


pole tekstowe

"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>

przycisk radiowy

"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">男

elementy formy

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.

uwaga 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.

uwaga Co to jest metoda htmlspecialchars ()?

Funkcja htmlspecialchars () do kilku predefiniowanych znaków w jednostkach HTML.

Predefiniowane znaki są:

  • & (Ampersand) staje się & amp;
  • "(Podwójny cudzysłów) staje się & quot;
  • '(Pojedynczy cudzysłów) staje się & # 039;
  • <(Mniejsze niż) staje się & lt;
  • > (Większe niż) staje & gt;


Formularz PHP potrzebne do spowodowania uwagę na to gdzie?

$ _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.

uwaga 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.w3big.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.


Jak uniknąć $ _SERVER [ "PHP_SELF"] wykorzystywaną?

$ _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/&quot;&gt;&lt;script&gt;alert('hacked')&lt;/script&gt;">

Próba luka nie powiodło się!


Walidacja danych formularza wykorzystanie PHP

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.w3big.com')</script>

Kod nie zostanie wykonany, ponieważ zostanie on zapisany jako kod HTML ewakuacyjnej w następujący sposób:

&lt;script&gt;location.href('http://www.w3big.com')&lt;/script&gt;

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:

  1. Wykorzystanie funkcji PHP trim (), aby usunąć dane wejściowe użytkownika niepotrzebne znaki (takie jak: przestrzeń, tabulacjami).
  2. Użyj stripslashes () w PHP funkcji, aby usunąć ukośnik dane wejściowe użytkownika (\)

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:

Przykłady

<?php
// 定义变量并默认设置为空值
$name = $email = $gender = $comment = $website = "";

if ($_SERVER["REQUEST_METHOD"] == "POST")
{
  $name = test_input($_POST["name"]);
  $email = test_input($_POST["email"]);
  $website = test_input($_POST["website"]);
  $comment = test_input($_POST["comment"]);
  $gender = test_input($_POST["gender"]);
}

function test_input($data)
{
  $data = trim($data);
  $data = stripslashes($data);
  $data = htmlspecialchars($data);
  return $data;
}
?>

Uruchomienie instancji »

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.