Heim >Backend-Entwicklung >PHP-Tutorial >PHP-Formularfilterung: Verhinderung und Filterung von SQL-Injections

PHP-Formularfilterung: Verhinderung und Filterung von SQL-Injections

WBOY
WBOYOriginal
2023-08-07 15:49:442372Durchsuche

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.

  1. String-Filterung

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.

  1. Zahlenfilterung

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.

  1. SQL-Injection-Verhinderung

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:

  1. PHP: filter_var – Handbuch (ohne Datum). ). Abgerufen von https://www.php.net/manual/en/function.preg-replace.php
  2. SQL-Injection (n.d.). SQL_Injection

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!

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