Schutz vor SQL-Injection in Python
Problem:
Sie haben ein Python-Skript, das aktualisiert einen char(80)-Wert in einer SQLite-Datenbank. Der Zeichenfolgenwert wird direkt von einem Benutzer abgerufen und als JSON-Nutzlast an das Skript übergeben. Sie sind sich bewusst, dass dieser Ansatz anfällig für SQL-Injection-Angriffe ist.
Lösung:
Zum Schutz vor SQL-Injection können Sie in Ihrem Aktualisierungsvorgang parametrisierte Abfragen verwenden. Mit parametrisierten Abfragen können Sie Werte an eine SQL-Anweisung übergeben, ohne sie direkt in die Abfragezeichenfolge aufzunehmen. Dies verhindert, dass böswillige Eingaben die SQL-Syntax stören.
Die Python-SQLite3-Bibliothek unterstützt parametrisierte Abfragen über das ? Platzhalter. Sie können Werte als Tupel von Werten an die Ausführungsmethode übergeben, die den Platzhaltern in der Abfrage entsprechen.
Überarbeiteter Code:
Hier ist eine überarbeitete Version Ihres setLabel-Methode, die eine parametrisierte Abfrage verwendet:
def setLabel( self, userId, refId, label ): self._db.cursor().execute( """ UPDATE items SET label = ? WHERE userId = ? AND refId = ?""", (label, userId, refId) ) self._db.commit()
Durch die Verwendung einer parametrisierten Abfrage stellen Sie sicher, dass die Benutzereingabe als Wert und nicht als Wert behandelt wird ein Teil der SQL-Anweisung, wodurch SQL-Injection-Angriffe effektiv verhindert werden.
Das obige ist der detaillierte Inhalt vonWie können parametrisierte Abfragen die SQL-Injection in Pythons SQLite-Interaktionen verhindern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!