Heim >Backend-Entwicklung >PHP-Tutorial >PHP-Formularfilterung: Verhinderung und Filterung von SQL-Injections
PHP-Formularfilterung: Verhinderung und Filterung von SQL-Injections
Einführung:
Mit der rasanten Entwicklung des Internets ist die Entwicklung von Webanwendungen immer häufiger geworden. In der Webentwicklung sind Formulare eine der häufigsten Formen der Benutzerinteraktion. Allerdings bestehen bei der Verarbeitung der Daten zur Formularübermittlung Sicherheitsrisiken. Eines der häufigsten Risiken sind SQL-Injection-Angriffe.
SQL-Injection-Angriff ist eine Angriffsmethode, bei der eine Webanwendung dazu verwendet wird, Benutzereingabedaten falsch zu verarbeiten, sodass der Angreifer nicht autorisierte Datenbankabfragen durchführen kann. Durch das Einschleusen von bösartigem SQL-Code in das Eingabefeld können Angreifer an die Daten in der Datenbank gelangen, diese ändern, löschen oder sogar zerstören.
Um SQL-Injection-Angriffe zu verhindern, müssen wir Benutzereingabedaten ordnungsgemäß filtern und verarbeiten. Im Folgenden stellen wir einige häufig verwendete PHP-Formularfiltermethoden vor und stellen entsprechende Codebeispiele bereit.
String-Filterung ist eine der gebräuchlichsten Methoden zur Formularfilterung. Mithilfe der in PHP integrierten Funktionen oder regulären Ausdrücke können wir einige Sonderzeichen und Schlüsselwörter filtern, um zu verhindern, dass Benutzer schädlichen Code eingeben.
1.1 String-Filterung mit den integrierten PHP-Funktionen
Beispielcode:
$name = $_POST['name']; $filtered_name = filter_var($name, FILTER_SANITIZE_STRING);
Im obigen Beispiel haben wir den vom Benutzer eingegebenen Namen über die Funktion filter_var und die Option FILTER_SANITIZE_STRING gefiltert. Diese Option filtert Sonderzeichen in der Originalzeichenfolge heraus.
1.2 Verwendung regulärer Ausdrücke für die Zeichenfolgenfilterung
Beispielcode:
$email = $_POST['email']; $filtered_email = preg_replace('/[^a-zA-Z0-9@.]/', '', $email);
Im obigen Beispiel verwenden wir die Funktion preg_replace und reguläre Ausdrücke, um Zeichen außer Groß- und Kleinbuchstaben, Zahlen, @ und . zu ersetzen. Auf diese Weise können wir einige Sonderzeichen herausfiltern, um sicherzustellen, dass die vom Benutzer eingegebene E-Mail-Adresse legal ist.
Digitale Filterung wird verwendet, um die vom Benutzer eingegebenen numerischen Daten zu filtern, um deren Rechtmäßigkeit sicherzustellen.
2.1 Numerische Filterung mit den integrierten PHP-Funktionen
Beispielcode:
$age = $_POST['age']; $filtered_age = filter_var($age, FILTER_SANITIZE_NUMBER_INT);
Im obigen Beispiel haben wir das vom Benutzer eingegebene Alter mithilfe der Funktion filter_var und der Option FILTER_SANITIZE_NUMBER_INT gefiltert. Diese Option filtert nicht numerische Zeichen aus dem Originalwert heraus.
2.2 Zahlenfilterung mit regulären Ausdrücken
Beispielcode:
$price = $_POST['price']; $filtered_price = preg_replace('/[^0-9.]/', '', $price);
Im obigen Beispiel verwenden wir die Funktion preg_replace und reguläre Ausdrücke, um Zeichen außer Zahlen und durch leere Zeichenfolgen zu ersetzen. Auf diese Weise können wir einige Sonderzeichen herausfiltern und sicherstellen, dass der vom Benutzer eingegebene Preis legal ist.
Zusätzlich zum Filtern der vom Benutzer eingegebenen Daten müssen wir auch einige Sicherheitsmaßnahmen ergreifen, um SQL-Injection-Angriffe zu verhindern.
3.1 Vorbereitete Anweisungen verwenden
Beispielcode:
$stmt = $pdo->prepare('SELECT * FROM users WHERE username = :username AND password = :password'); $stmt->bindParam(':username', $username); $stmt->bindParam(':password', $password); $stmt->execute();
Im obigen Beispiel verwenden wir die vorbereiteten Anweisungen von PDO, um Datenbankabfragen auszuführen. Durch die Verwendung von Bindungsparametern können wir das direkte Zusammenfügen von vom Benutzer eingegebenen Daten in Abfragen vermeiden und so SQL-Injection-Angriffe wirksam verhindern.
Fazit:
In der Webentwicklung sind Formulare eine sehr wichtige Möglichkeit der Benutzerinteraktion. Bei der Verarbeitung von Formulardaten müssen wir jedoch sehr vorsichtig sein, um uns vor SQL-Injection-Angriffen zu schützen. Durch angemessene Datenfilterung und die Verwendung vorbereiteter Anweisungen können wir sicherstellen, dass die von Benutzern eingegebenen Daten legal sind, und SQL-Injection-Angriffe wirksam verhindern. Ich hoffe, dieser Artikel kann Ihnen helfen, die PHP-Formularfilterung und die Verhinderung von SQL-Injections zu verstehen.
Referenz:
Das obige ist der detaillierte Inhalt vonPHP-Formularfilterung: Verhinderung und Filterung von SQL-Injections. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!