PHP Formular-Validierung
In diesem Kapitel wird erklärt, wie unsere PHP Formulardaten vom Client Validierung vorgelegt zu verwenden.
PHP Formular-Validierung
Im Umgang mit PHP Form brauchen wir Sicherheit zu berücksichtigen. In diesem Kapitel werden wir Sie PHP Formularverarbeitung Datensicherheit, um zeigen Hacker zu verhindern und Spam müssen wir die Form der Datenvalidierung zu sichern. |
HTML-Formular in diesem Abschnitt beschrieben enthält folgende Eingabefelder: müssen mit den optionalen Textfelder, Optionsfelder und einreichen Tasten verwendet werden:
Über Form sind Validierungsregeln wie folgt:
Feld | Validierungsregeln |
---|---|
Name | Muss. + Nur Buchstaben und Leerzeichen |
Muss. + Geben Sie eine gültige E-Mail-Adresse (einschließlich "@" und ".") | |
Standort | Muss. Falls vorhanden, muss es eine gültige URL enthalten |
Bemerkung | Muss. Multi-line-Eingabefeld (Textfeld) |
Geschlecht | Muss. Sie müssen wählen |
Lassen Sie uns zunächst auf der Ebene HTML-Formular Code aussehen:
Textfeld
"Name", "E-Mail" und "URL" Feld ein Texteingabeelement ist, ist die "Notizen" Feld ein Textfeld. HTML-Code wie folgt:
“名字”: <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>
Radioknopf
"Gender" Feld ist ein Radio-Button, HTML-Code sieht wie folgt aus:
性别: <input type="radio" name="gender" value="female">女 <input type="radio" name="gender" value="male">男
Formularelemente
HTML-Formular Code wie folgt:
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
Verwenden Sie dieses Formularmethod = "post" Methode , um Daten zu übermitteln.
Was ist $ _SERVER [ "PHP_SELF"] Variablen? $ _SERVER [ "PHP_SELF"] ist ein super globale Variable liefert den aktuell ausgeführten Skripts Dateinamen mit dem Document-Root verbunden. |
Also, $ _SERVER [ "PHP_SELF"] wird die Formulardaten an die aktuelle Seite zu senden, anstatt auf eine andere Seite zu springen.
Was ist htmlspecialchars () Methode? htmlspecialchars () Funktion zu einigen vordefinierten Zeichen in HTML-Entitäten. Die vordefinierten Zeichen sind:
|
PHP Form zu verursachen Aufmerksamkeit erforderlich, wo?
$ _SERVER [ "PHP_SELF"] Variablen könnten von Hackern verwendet werden!
Wenn Hacker Cross-Site-Scripting-HTTP-Verbindung mit angreifen, wird $ _ SERVER [ "PHP_SELF"] Variable in der Server-Skript implantiert werden. Der Grund dafür ist, dass Cross-Site-Scripting-ausführbare Datei auf den Pfad hinter angebracht ist, so $ _SERVER [ "PHP_SELF"] String HTTP-Links hinter dem JavaScript-Code enthalten.
XSS auch als CSS (Cross-Site - Script), Cross-Site - Scripting - Attacken bekannt. Ein böswilliger Angreifer manipulierte Webseite in HTML - Code einzufügen, wenn ein Benutzer die Seite eingebettete Web , das in den HTML - Code das Surfen auf der Kriminellen spezifischen Zweck zu erreichen ausgeführt. |
Geben Sie das folgende Formular aus Datei "test_form.php" genannt:
<form method="post" action="<?php echo $_SERVER["PHP_SELF"];?>">
Jetzt nutzen wir die URL der angegebenen Adresse "test_form.php" zu unterbreiten, wie in dem oben gezeigten Code wird wie folgt geändert:
<form method="post" action="test_form.php">
Doing so gut.
Allerdings wird der Benutzer unter Berücksichtigung der folgenden Adresse in Ihrem Browser-Adressleiste eingeben:
http://www.w3big.com/test_form.php/%22%3E%3Cscript%3Ealert('hacked')%3C/script%3E
Die obige URL wird als dem folgenden Code interpretiert und führen Sie es aus:
<form method="post" action="test_form.php/"><script>alert('hacked')</script>
Fügen Sie ein Skript-Tag Code und Alarmbefehl. Wenn die Seite geladen wird den Javascript-Code ausführen (der Benutzer wird ein Pop-up sehen). Dies ist nur ein einfaches Beispiel PHP_SELF Variable zu veranschaulichen werden von Hackern genutzt werden.
Bitte beachten Sie, dass jeder JavaScript - Code kann mit dem <script> -Tag hinzugefügt werden! Hacker diese Seite verwenden, können auf einen Server auf einer anderen Seite, der Seite Codedatei umleiten bösartigem Code zu schützen, kann der Code geändert werden, um die Benutzer-globalen Variablen oder Formulardaten zu erhalten.
Wie die $ _SERVER [ "PHP_SELF"] ausgebeutet zu vermeiden?
$ _SERVER [ "PHP_SELF"] von htmlspecialchars () Funktion zu vermeiden, ausgenutzt zu werden.
bilden Code wie folgt:
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
htmlspecialchars (), um einige vordefinierte Zeichen in HTML-Entitäten. Wenn nun der Benutzer PHP_SELF Variablen verwenden möchte, sind die Ergebnisse wie folgt ausgegeben:
<form method="post" action="test_form.php/"><script>alert('hacked')</script>">
Die Sicherheitsanfälligkeit Versuch fehlgeschlagen!
Verwenden Sie PHP Form Datenvalidierung
Zunächst einmal wir Daten an den Benutzer () Funktion abgegeben haben wird über die PHP htmlspecialchars verarbeitet.
Wenn wir die htmlspecialchars () Funktion zu verwenden, versucht der Benutzer die folgenden Textfelder einreichen:
<script>location.href('http://www.w3big.com')</script>
Der Code wird nicht ausgeführt werden, weil es als HTML-Escape-Code gespeichert werden soll, wie folgt:
<script>location.href('http://www.w3big.com')</script>
Der obige Code ist sicher und kann die Nachricht auf der Seite angezeigt oder einfügen werden.
Wenn der Benutzer das Formular abschickt, werden wir folgende zwei Dinge tun:
- Verwenden Sie PHP trim () Funktion, um die Benutzereingabedaten unnötige Zeichen (wie zum Beispiel: Leerzeichen, Tabulator, Newline) zu entfernen.
- Verwenden Sie PHP strip () Funktion, um die Benutzereingabedaten Backslash (\) zu entfernen
Lassen Sie diese Filterfunktionen in Abhängigkeit von unserer eigenen Definition geschrieben, dies erheblich die Wiederverwendbarkeit von Code verbessern können.
Die Funktion mit dem Namen test_input ().
Jetzt können wir test_input () Funktion alle Variablen in $ _POST zu erkennen, ist Script-Code wie folgt:
Beispiele
// 定义变量并默认设置为空值
$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;
}
?>
Ausführung einer Instanz »
Beachten Sie, dass, wenn wir das obige Skript ausführen, die von $ _SERVER [ "REQUEST_METHOD"] zu erkennen, ob das Formular abgeschickt wird. Wenn REQUEST_METHOD POST ist, wird das Formular abgeschickt - werden die Daten überprüft. Wenn das Formular nicht überspringt Überprüfung vorgelegt und zeigt einen leeren.
Verwenden Sie sind die Eingabeelemente in den obigen Beispielen optional, auch wenn der Benutzer eingeben keine Daten korrekt angezeigt werden können.
Im nächsten Abschnitt werden wir beschreiben, wie die Daten vom Benutzer eingegeben zu validieren.