Heim >Datenbank >MySQL-Tutorial >Wie kann ich Parameter mit SQL-LIKE-Anweisungen sicher verwenden, um SQL-Injection zu verhindern?

Wie kann ich Parameter mit SQL-LIKE-Anweisungen sicher verwenden, um SQL-Injection zu verhindern?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-31 18:03:11867Durchsuche

How Can I Safely Use Parameters with SQL LIKE Statements to Prevent SQL Injection?

Verwenden von Parametern in der SQL-LIKE-Anweisung

Beim Erstellen einer Suchfunktion ist es unbedingt erforderlich, Parameter zum Schutz vor SQL-Injection-Bedrohungen zu verwenden. Die Verwendung von Parametern in einer LIKE-Anweisung kann jedoch zu Herausforderungen führen, wie die folgende Abfrage zeigt:

SELECT * FROM compliance_corner WHERE (body LIKE '%@query%') OR (title LIKE '%@query%')

Diese Abfrage ist anfällig für SQL-Injection, da die Parameter nicht ordnungsgemäß bereinigt werden. Um dieses Problem zu beheben, müssen die Parameter ordnungsgemäß definiert und mit einem Wert wie folgt zugewiesen werden:

Dim cmd as New SqlCommand(
 "SELECT * FROM compliance_corner"_
  + " WHERE (body LIKE @query )"_ 
  + " OR (title LIKE @query)")

cmd.Parameters.Add("@query", "%" +searchString +"%")

In diesem Beispiel wird der Parameter @query mit dem Wert von searchString definiert. Dadurch wird sichergestellt, dass die Eingabe des Benutzers, searchString, ordnungsgemäß bereinigt wird und die Abfrage vor SQL-Injection geschützt ist.

Außerdem ist zu beachten, dass die Abfrage Ergebnisse zurückgibt, wenn sie direkt in SQL Server ausgeführt wird:

SELECT * FROM compliance_corner WHERE (body LIKE '%max%') OR (title LIKE '%max%')

Das liegt daran, dass die Abfrage ohne Parameter ausgeführt wird und die LIKE-Anweisung die Zeichenfolge %max% direkt mit dem Inhalt der Haupt- und Titelspalten vergleicht. Wenn die LIKE-Anweisung jedoch mit Parametern ausgeführt wird, vergleicht sie den Parameterwert @query mit den Inhalten der Spalten, die ordnungsgemäß bereinigt werden, was dazu führt, dass keine Übereinstimmungen zurückgegeben werden.

Das obige ist der detaillierte Inhalt vonWie kann ich Parameter mit SQL-LIKE-Anweisungen sicher verwenden, um SQL-Injection zu verhindern?. 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