Heim > Datenbank > MySQL-Tutorial > Wie kann man SQL-Platzhalter sicher mit Pythons „MySQLdb' verwenden, um Injektionen zu vermeiden?

Wie kann man SQL-Platzhalter sicher mit Pythons „MySQLdb' verwenden, um Injektionen zu vermeiden?

Mary-Kate Olsen
Freigeben: 2024-12-21 03:31:08
Original
797 Leute haben es durchsucht

How to Safely Use SQL Wildcards with Python's `MySQLdb` to Avoid Injection?

Verwendung von SQL-Platzhaltern und LIKE-Operatoren in Python-Stringformaten

Das Einfügen von SQL-Platzhaltern und LIKE-Operatoren in Python-Stringformate kann eine Herausforderung sein. Dieser Artikel bietet eine Lösung für häufige Fehler, die beim Versuch auftreten, MySQL-Abfragen mit MySQLdb auszuführen.

Fehler von MySQLdb

Bei Versuch 3 und 4 wurden Fehler von MySQLdb zurückgegeben, die Folgendes anzeigen: Nicht genügend Argumente für Formatzeichenfolge.“ Dies liegt daran, dass das %-Zeichen vom String-Formatierungsoperator in Python als Formatbezeichner interpretiert wird.

Anfälligkeit für SQL-Injection

Die ersten vier gezeigten Versuche sind anfällig für SQL-Injection-Angriffe. Benutzereingaben, wie etwa die Abfragevariable, sollten bereinigt oder maskiert werden, um zu verhindern, dass bösartiges SQL ausgeführt wird.

Richtiger Ansatz

Der empfohlene Ansatz ist die Verwendung eines Platzhalters statt String-Formatierung. Hier ist ein Beispiel:

curs.execute("""SELECT tag.userId, count(user.id) as totalRows 
                  FROM user 
            INNER JOIN tag ON user.id = tag.userId 
                 WHERE user.username LIKE %s""", ('%' + query + '%',))
Nach dem Login kopieren

Zwei Argumente werden anexecute() übergeben:

  • Die SQL-Anweisung mit einem Platzhalter zum Einfügen des Platzhalters.
  • Ein Tupel Enthält den bereinigten Abfragewert mit den Platzhalterzeichen.

Dieser Ansatz stellt sicher, dass die SQL-Anweisung gültig und vor SQL geschützt ist Injektion.

Das obige ist der detaillierte Inhalt vonWie kann man SQL-Platzhalter sicher mit Pythons „MySQLdb' verwenden, um Injektionen zu vermeiden?. 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