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
Freigeben: 2024-12-31 18:03:11
Original
850 Leute haben es durchsucht

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%')
Nach dem Login kopieren

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 +"%")
Nach dem Login kopieren

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%')
Nach dem Login kopieren

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!

Quelle:php.cn
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage