Maison > base de données > tutoriel mysql > Comment les requêtes paramétrées peuvent-elles empêcher l'injection SQL dans les interactions SQLite de Python ?

Comment les requêtes paramétrées peuvent-elles empêcher l'injection SQL dans les interactions SQLite de Python ?

Barbara Streisand
Libérer: 2025-01-05 00:17:40
original
557 Les gens l'ont consulté

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

Protection contre l'injection SQL en Python

Problème :

Vous disposez d'un script Python qui met à jour une valeur char(80) dans une base de données SQLite. La valeur de chaîne est obtenue directement auprès d'un utilisateur et transmise au script en tant que charge utile JSON. Vous êtes conscient que cette approche est vulnérable aux attaques par injection SQL.

Solution :

Pour vous protéger contre l'injection SQL, vous pouvez utiliser des requêtes paramétrées dans votre opération de mise à jour. Les requêtes paramétrées vous permettent de transmettre des valeurs à une instruction SQL sans les inclure directement dans la chaîne de requête. Cela empêche les entrées malveillantes de perturber la syntaxe SQL.

La bibliothèque Python sqlite3 prend en charge les requêtes paramétrées via le ? espace réservé. Vous pouvez transmettre des valeurs à la méthode d'exécution sous la forme d'un tuple de valeurs correspondant aux espaces réservés dans la requête.

Code révisé :

Voici une version révisée de votre Méthode setLabel qui utilise une requête paramétrée :

def setLabel( self, userId, refId, label ):
    self._db.cursor().execute(
        """
        UPDATE items SET label = ? WHERE userId = ? AND refId = ?""",
        (label, userId, refId)
    )
    self._db.commit()
Copier après la connexion

En utilisant une requête paramétrée, vous vous assurez que la saisie de l'utilisateur est traitée comme une valeur plutôt qu'une partie de l'instruction SQL, empêchant efficacement les attaques par injection SQL.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal