Heim > Datenbank > MySQL-Tutorial > Wie kann ich MySQLs LIKE '%{$var}%' sicher mit vorbereiteten Anweisungen verwenden?

Wie kann ich MySQLs LIKE '%{$var}%' sicher mit vorbereiteten Anweisungen verwenden?

Mary-Kate Olsen
Freigeben: 2025-01-16 10:52:59
Original
884 Leute haben es durchsucht

How Can I Safely Use MySQL's LIKE '%{$var}%' with Prepared Statements?

Schutz Ihrer Datenbank: Richtige Verwendung von LIKE '%{$var}%' in vorbereiteten Anweisungen

Der Aufbau dynamischer Suchfunktionen, die auf Benutzereingaben reagieren, erfordert sorgfältige Überlegungen zur Sicherheit. Ein häufiges Szenario besteht in der Suche nach Benutzernamen, die eine teilweise Übereinstimmung enthalten, mithilfe des MySQL-Operators LIKE. Allerdings ist die direkte Einbindung von Benutzereingaben in eine LIKE-Klausel innerhalb einer vorbereiteten Anweisung anfällig für SQL-Injection-Schwachstellen.

Bei falschen Ansätzen wird häufig versucht, Platzhalter in die Platzhalterzeichen LIKE einzubetten, z. B. SELECT * FROM users WHERE username LIKE '%{?}%'. Dies ist fehlerhaft, da die Platzhaltersyntax vom Datenbanktreiber nicht korrekt interpretiert wird.

Der Schlüssel zur sicheren Implementierung liegt in der Konstruktion des LIKE Ausdrucks vor der Vorbereitung der Anweisung. Dadurch wird sichergestellt, dass die Benutzereingaben ordnungsgemäß bereinigt und als Daten und nicht als ausführbarer Code behandelt werden. Hier ist die richtige Methode:

<code class="language-php">$searchParam = "%" . $yourParam . "%"; // Prepend and append wildcards
$stmt = $mysqli->prepare("SELECT * FROM REGISTRY WHERE name LIKE ?");
$stmt->bind_param("s", $searchParam); // Bind the complete LIKE expression
$stmt->execute();</code>
Nach dem Login kopieren

In diesem verbesserten Beispiel werden die %-Platzhalter zu den vom Benutzer bereitgestellten $yourParam hinzugefügt, um das vollständige LIKE-Muster zu erstellen, das in $searchParam gespeichert ist. Dieses vollständige Muster wird dann mithilfe von bind_param mit dem Zeichenfolgentyp („s“) an den Platzhalter der vorbereiteten Anweisung gebunden. Dies verhindert SQL-Injection und behält gleichzeitig die dynamische Suchfunktion bei. Dieser Ansatz gewährleistet sowohl die Sicherheit als auch die Effizienz vorbereiteter Abrechnungen.

Das obige ist der detaillierte Inhalt vonWie kann ich MySQLs LIKE '%{$var}%' sicher mit vorbereiteten Anweisungen verwenden?. 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