Heim > Datenbank > MySQL-Tutorial > Wie können parametrisierte Abfragen die SQL-Injection in Pythons SQLite-Interaktionen verhindern?

Wie können parametrisierte Abfragen die SQL-Injection in Pythons SQLite-Interaktionen verhindern?

Barbara Streisand
Freigeben: 2025-01-05 00:17:40
Original
518 Leute haben es durchsucht

How Can Parameterized Queries Prevent SQL Injection in Python's SQLite Interactions?

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()
Nach dem Login kopieren

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!

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