Heim Backend-Entwicklung PHP-Tutorial Wie schreibe ich eine sichere Formularvalidierung mit PHP?

Wie schreibe ich eine sichere Formularvalidierung mit PHP?

Aug 26, 2023 pm 08:04 PM
编程 表单验证 php安全

Wie schreibe ich eine sichere Formularvalidierung mit PHP?

Wie schreibe ich eine sichere Formularvalidierung mit PHP?

Bei der Entwicklung von Webanwendungen sind Formulare einer der wesentlichen Bestandteile. Über Formulare können wir mit Benutzern interagieren und von Benutzern eingegebene Daten abrufen. Allerdings sind die von Benutzern eingegebenen Daten oft nicht vertrauenswürdig und können bösartigen Code und böswilliges Verhalten enthalten. Daher müssen Benutzereingabedaten vor der Verarbeitung validiert und gefiltert werden, um die Sicherheit der Anwendung zu gewährleisten. In diesem Artikel erfahren Sie, wie Sie eine sichere Formularvalidierung mit PHP schreiben.

  1. PHP-Filter aktivieren

PHP bietet einige integrierte Filter, die zum Validieren und Filtern von Benutzereingabedaten verwendet werden können. Zuerst müssen wir sicherstellen, dass die Filterfunktion von PHP aktiviert ist. Suchen Sie die folgenden Codezeilen in der Datei php.ini und stellen Sie sicher, dass sie nicht auskommentiert sind:

;extension=filter
;extension=filter_xss
Nach dem Login kopieren

Entfernen Sie das vorangehende Semikolon, speichern Sie die Datei und starten Sie dann den Webserver neu.

  1. Formular einrichten

Zuerst müssen wir das Formular einrichten und die Formularbeschriftungen und entsprechenden Eingabefelder definieren. Erstellen Sie beispielsweise ein Registrierungsformular mit den Feldern Benutzername, Passwort und E-Mail-Adresse:

<form action="register.php" method="post">
    <label for="username">用户名:</label>
    <input type="text" name="username" id="username">

    <label for="password">密码:</label>
    <input type="password" name="password" id="password">

    <label for="email">邮箱:</label>
    <input type="email" name="email" id="email">

    <input type="submit" value="注册">
</form>
Nach dem Login kopieren
  1. Validierungscode schreiben

Nach dem Absenden des Formulars müssen wir einen Validierungscode schreiben, um die Benutzereingabedaten zu validieren und zu filtern. Erstens können wir die Filterfunktionen filter_input() und filter_input_array() verwenden, um Benutzereingabedaten abzurufen und zu filtern. filter_input()filter_input_array()来获取并过滤用户输入数据。

$username = filter_input(INPUT_POST, 'username', FILTER_SANITIZE_STRING);
$password = filter_input(INPUT_POST, 'password', FILTER_SANITIZE_STRING);
$email = filter_input(INPUT_POST, 'email', FILTER_SANITIZE_EMAIL);
Nach dem Login kopieren

在上述代码中,filter_input()函数用于过滤单个输入字段,filter_input_array()函数用于过滤多个输入字段。FILTER_SANITIZE_STRING用于过滤字符串,FILTER_SANITIZE_EMAIL用于过滤电子邮件地址。

接下来,我们可以使用正则表达式对用户名和密码进行额外的验证。例如,验证用户名只包含字母、数字和下划线,并且长度在3到20个字符之间:

$usernameRegex = '/^[a-zA-Z0-9_]{3,20}$/';
if (!preg_match($usernameRegex, $username)) {
    echo "用户名必须是3到20个字符的字母、数字或下划线组合";
    exit();
}
Nach dem Login kopieren

类似地,我们可以对其他需要进一步验证的字段进行正则表达式验证。

最后,确保在将用户输入数据存储到数据库之前,使用适当的转义函数对数据进行转义,以防止SQL注入攻击。例如,使用mysqli_real_escape_string()函数对数据进行转义:

$username = mysqli_real_escape_string($dbConnection, $username);
$password = mysqli_real_escape_string($dbConnection, $password);
$email = mysqli_real_escape_string($dbConnection, $email);
Nach dem Login kopieren

在上述代码中,$dbConnection是数据库连接对象。

  1. 错误处理

在表单验证过程中,可能会出现一些错误,例如用户名已被占用、密码过弱等。针对这些情况,我们应该提供相应的错误提示。在验证代码中,使用$errors数组来存储错误信息,并在表单中显示这些错误信息:

$errors = array();

// 验证用户名是否已经被占用
if (usernameExists($username)) {
    $errors['username'] = "用户名已经被占用";
}

// 验证密码强度
if (isWeakPassword($password)) {
    $errors['password'] = "密码过弱";
}

// 显示错误信息
if (!empty($errors)) {
    foreach ($errors as $error) {
        echo $error . "<br>";
    }
}
Nach dem Login kopieren

在上述代码中,usernameExists()isWeakPassword()rrreee

Im obigen Code wird die Funktion filter_input() zum Filtern eines einzelnen Eingabefelds und die Funktion filter_input_array() zum Filtern mehrerer Eingabefelder verwendet. FILTER_SANITIZE_STRING wird zum Filtern von Zeichenfolgen und FILTER_SANITIZE_EMAIL zum Filtern von E-Mail-Adressen verwendet.

Als nächstes können wir reguläre Ausdrücke verwenden, um eine zusätzliche Validierung des Benutzernamens und Passworts durchzuführen. Stellen Sie beispielsweise sicher, dass der Benutzername nur Buchstaben, Zahlen und Unterstriche enthält und zwischen 3 und 20 Zeichen lang ist:

rrreee

Ebenso können wir eine Regex-Validierung für andere Felder durchführen, die eine weitere Validierung erfordern. 🎜🎜Stellen Sie abschließend sicher, dass Benutzereingabedaten mithilfe geeigneter Escape-Funktionen maskiert werden, bevor Sie sie in der Datenbank speichern, um SQL-Injection-Angriffe zu verhindern. Verwenden Sie beispielsweise die Funktion mysqli_real_escape_string(), um Daten zu maskieren: 🎜rrreee🎜Im obigen Code ist $dbConnection das Datenbankverbindungsobjekt. 🎜
    🎜Fehlerbehandlung🎜🎜🎜Während des Formularüberprüfungsprozesses können einige Fehler auftreten, z. B. wenn der Benutzername belegt ist, das Passwort zu schwach ist usw. Für diese Situationen sollten wir entsprechende Fehlermeldungen bereitstellen. Verwenden Sie im Validierungscode das Array $errors, um Fehlermeldungen zu speichern und diese Fehlermeldungen in der Form anzuzeigen: 🎜rrreee🎜Im obigen Code sind usernameExists() und isWeakPassword() ist eine benutzerdefinierte Verifizierungsfunktion, mit der überprüft wird, ob der Benutzername belegt ist und ob das Passwort zu schwach ist. 🎜🎜Zusammenfassend lässt sich sagen, dass wir durch die ordnungsgemäße Einrichtung des Formulars und das Schreiben eines sicheren Bestätigungscodes Benutzereingabedaten effektiv filtern und überprüfen und die Sicherheit von Webanwendungen verbessern können. Natürlich sind neben der Front-End-Verifizierung auch Back-End-Sicherheitsmaßnahmen unerlässlich, beispielsweise die Verwendung vorbereiteter Anweisungen zur Verhinderung von SQL-Injection und anderen Angriffen. 🎜🎜Das Obige ist eine Einführung in die Verwendung von PHP zum Schreiben einer sicheren Formularvalidierung. Hoffe es hilft! 🎜

Das obige ist der detaillierte Inhalt vonWie schreibe ich eine sichere Formularvalidierung mit PHP?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Entfernen Sie doppelte Werte mithilfe regulärer Ausdrücke aus dem PHP-Array Entfernen Sie doppelte Werte mithilfe regulärer Ausdrücke aus dem PHP-Array Apr 26, 2024 pm 04:33 PM

So entfernen Sie doppelte Werte mithilfe regulärer Ausdrücke aus einem PHP-Array: Verwenden Sie den regulären Ausdruck /(.*)(.+)/i, um Duplikate abzugleichen und zu ersetzen. Durchlaufen Sie die Array-Elemente und prüfen Sie mit preg_match, ob Übereinstimmungen vorliegen. Wenn es eine Übereinstimmung gibt, überspringen Sie den Wert; andernfalls fügen Sie ihn einem neuen Array ohne doppelte Werte hinzu.

Wie funktioniert die Session -Entführung und wie können Sie es in PHP mildern? Wie funktioniert die Session -Entführung und wie können Sie es in PHP mildern? Apr 06, 2025 am 12:02 AM

Die Hijacking der Sitzung kann in den folgenden Schritten erreicht werden: 1. Erhalten Sie die Sitzungs -ID, 2. Verwenden Sie die Sitzungs -ID, 3. Halten Sie die Sitzung aktiv. Zu den Methoden zur Verhinderung der Sitzung der Sitzung in PHP gehören: 1. Verwenden Sie die Funktion Session_regenerate_id (), um die Sitzungs -ID zu regenerieren. 2. Store -Sitzungsdaten über die Datenbank, 3. Stellen Sie sicher, dass alle Sitzungsdaten über HTTPS übertragen werden.

Wozu dient das Programmieren und welchen Nutzen hat es, es zu lernen? Wozu dient das Programmieren und welchen Nutzen hat es, es zu lernen? Apr 28, 2024 pm 01:34 PM

1. Mithilfe der Programmierung können verschiedene Software- und Anwendungsprogramme entwickelt werden, darunter Websites, mobile Anwendungen, Spiele und Datenanalysetools. Seine Anwendungsbereiche sind sehr breit gefächert und decken nahezu alle Branchen ab, darunter wissenschaftliche Forschung, Gesundheitswesen, Finanzen, Bildung, Unterhaltung usw. 2. Das Erlernen des Programmierens kann uns helfen, unsere Fähigkeiten zur Problemlösung und unser logisches Denkvermögen zu verbessern. Beim Programmieren müssen wir Probleme analysieren und verstehen, Lösungen finden und diese in Code übersetzen. Diese Denkweise kann unsere analytischen und abstrakten Fähigkeiten fördern und unsere Fähigkeit verbessern, praktische Probleme zu lösen.

Problemlösung mit Python: Erschließen Sie leistungsstarke Lösungen als Programmieranfänger Problemlösung mit Python: Erschließen Sie leistungsstarke Lösungen als Programmieranfänger Oct 11, 2024 pm 08:58 PM

Python unterstützt Anfänger bei der Problemlösung. Seine benutzerfreundliche Syntax, umfangreiche Bibliothek und Funktionen wie Variablen, bedingte Anweisungen und Schleifen ermöglichen eine effiziente Codeentwicklung. Von der Datenverwaltung über die Steuerung des Programmablaufs bis hin zur Ausführung wiederkehrender Aufgaben bietet Python

Sammlung von C++-Programmierrätseln: Regen Sie das Denken an und verbessern Sie Ihre Programmierkenntnisse Sammlung von C++-Programmierrätseln: Regen Sie das Denken an und verbessern Sie Ihre Programmierkenntnisse Jun 01, 2024 pm 10:26 PM

C++-Programmierrätsel behandeln Algorithmen- und Datenstrukturkonzepte wie Fibonacci-Folge, Fakultät, Hamming-Distanz, Maximal- und Minimalwerte von Arrays usw. Durch das Lösen dieser Rätsel können Sie Ihre C++-Kenntnisse festigen und das Algorithmusverständnis und die Programmierkenntnisse verbessern.

Sicherheitslücken und Lösungen in der PHP-Entwicklung Sicherheitslücken und Lösungen in der PHP-Entwicklung May 09, 2024 pm 03:33 PM

Sicherheitslücken und Lösungen in der PHP-Entwicklung Einführung PHP ist eine beliebte serverseitige Skriptsprache, die in der Webentwicklung weit verbreitet ist. Allerdings weist PHP, wie jede Software, einige Sicherheitslücken auf. In diesem Artikel werden häufige PHP-Sicherheitslücken und deren Lösungen untersucht. Häufige PHP-Sicherheitslücke SQL-Injection: Ermöglicht einem Angreifer den Zugriff auf oder die Änderung von Daten in der Datenbank, indem er bösartigen SQL-Code in ein Webformular oder eine URL eingibt. Cross-Site-Scripting (XSS): ermöglicht es einem Angreifer, schädlichen Skriptcode im Browser des Benutzers auszuführen. Datei enthält: Ermöglicht einem Angreifer das Laden und Ausführen von Remote-Dateien oder sensiblen Dateien auf dem Server. Remote Code Execution (RCE): ermöglicht es Angreifern, beliebige Codes auszuführen

Der Schlüssel zum Programmieren: Die Leistungsfähigkeit von Python für Anfänger freischalten Der Schlüssel zum Programmieren: Die Leistungsfähigkeit von Python für Anfänger freischalten Oct 11, 2024 pm 12:17 PM

Python ist aufgrund seiner einfachen Erlernbarkeit und leistungsstarken Funktionen eine ideale Einführungssprache in die Programmierung für Anfänger. Zu seinen Grundlagen gehören: Variablen: werden zum Speichern von Daten (Zahlen, Zeichenfolgen, Listen usw.) verwendet. Datentyp: Definiert den Datentyp in der Variablen (Ganzzahl, Gleitkomma usw.). Operatoren: werden für mathematische Operationen und Vergleiche verwendet. Kontrollfluss: Kontrollieren Sie den Fluss der Codeausführung (bedingte Anweisungen, Schleifen).

Erklären Sie Cross-Site-Scripting (XSS) und wie Sie es in PHP (htmlspecialChars) verhindern. Erklären Sie Cross-Site-Scripting (XSS) und wie Sie es in PHP (htmlspecialChars) verhindern. Apr 08, 2025 am 12:04 AM

XSS ist ein Angriff, der im Browser des Benutzers durch Injektion böswilliger Skripte ausgeführt wird. Die Verwendung der Funktion HTMLSpecialChars in PHP kann XSS -Angriffe effektiv verhindern: 1) HTMLSpecialChars konvertiert Sonderzeichen in HTML -Entitäten, um zu verhindern, dass Browser sie als Code interpretieren. 2) Bei Verwendung in HTML -Attributen müssen Anführungszeichen mit dem Flag ent_quotes entkommen; 3) Kombination anderer Sicherheitsmaßnahmen, wie z. B. Eingangsüberprüfung und Ausgangscodierung, wird ein mehrstufiger Schutz gebildet.

See all articles