Sicheres Implodieren von Listen für MySQL IN-Klauseln
Datenbanksicherheit ist von größter Bedeutung und die Vermeidung von SQL-Injection ist von entscheidender Bedeutung. Bei der Verwendung einer Liste von Werten in einer MySQL IN-Klausel ist es wichtig, dies sicher zu tun.
Problem:
Erweitern einer Liste in eine Zeichenfolge zur Verwendung in einer Die IN-Klausel ist anfällig für SQL Injektion.
# Vulnerable cursor.execute("DELETE FROM foo.bar WHERE baz IN ('%s')" % foostring)
Lösung:
Um sich vor SQL-Injection zu schützen, verwenden Sie die Werteliste direkt als Parameter:
# Safe format_strings = ','.join(['%s'] * len(list_of_ids)) cursor.execute("DELETE FROM foo.bar WHERE baz IN (%s)" % format_strings, tuple(list_of_ids))
Dies Der Ansatz übergibt die Werteliste als Parameter, anstatt sie in die Abfragezeichenfolge einzubetten, wodurch Injektionsangriffe effektiv verhindert werden.
Durch direkte Übergabe von Daten an den MySQL-Treiber als Parameter machen manuelle Anführungszeichen und Escapezeichen überflüssig und stellen die Integrität Ihrer Datenbankoperationen sicher.
Das obige ist der detaillierte Inhalt vonWie kann man Listen in MySQL-IN-Klauseln sicher verwenden, um SQL-Injection zu verhindern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!