Heim >Datenbank >MySQL-Tutorial >Wie verhindert man SQL-Injection beim Aktualisieren einer SQLite-Datenbank über JSON POST in Python?

Wie verhindert man SQL-Injection beim Aktualisieren einer SQLite-Datenbank über JSON POST in Python?

DDD
DDDOriginal
2025-01-04 21:35:41844Durchsuche

How to Prevent SQL Injection When Updating an SQLite Database via JSON POST in Python?

SQL-Injection-Schutz in Python

Frage:

Zum Schutz vor SQL-Injection-Schwachstellen: Wie kann eine vom Benutzer empfangene und über JSON POST gesendete Zeichenfolge für sichere Aktualisierungsvorgänge in einer SQLite-Datenbank bereinigt werden? Python?

Antwort:

Verwendung parametrisierter Abfragen

Der empfohlene Ansatz zur Minderung des SQL-Injection-Risikos ist die Verwendung parametrisierter Abfragen . Das sqlite3-Modul von Python unterstützt dies über Platzhalterparameter (?). Anstatt Benutzereingaben direkt in der SQL-Anweisung zu verketten, werden sie als Parameter übergeben, wodurch Benutzereingaben von der SQL-Syntax getrennt werden.

Überarbeiteter Code:

def setLabel(self, userId, refId, label):
    cursor = self._db.cursor()
    query = """UPDATE items SET label = ? WHERE userId IS ? AND refId IS ?"""
    cursor.execute(query, (label, userId, refId))
    self._db.commit()

Von Bei Verwendung einer parametrisierten Abfrage werden alle potenziell schädlichen Zeichen oder Metazeichen in der Label-Eingabe automatisch maskiert, um sicherzustellen, dass sie als wörtlicher Text und nicht als SQL interpretiert werden Befehle.

Das obige ist der detaillierte Inhalt vonWie verhindert man SQL-Injection beim Aktualisieren einer SQLite-Datenbank über JSON POST in Python?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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