Maison >base de données >tutoriel mysql >Comment empêcher l'injection SQL lors de la mise à jour d'une base de données SQLite via JSON POST en Python ?
Protection contre les injections SQL en Python
Question :
Pour se protéger contre la vulnérabilité d'injection SQL, comment une chaîne reçue de l'utilisateur et envoyée via JSON POST peut-elle être nettoyée pour des opérations de mise à jour sécurisées dans une base de données SQLite au sein Python ?
Réponse :
Utilisation de requêtes paramétrées
L'approche recommandée pour atténuer le risque d'injection SQL consiste à utiliser des requêtes paramétrées . Le module sqlite3 de Python prend en charge cela via des paramètres d'espace réservé (?). Au lieu de concaténer les entrées utilisateur directement dans l'instruction SQL, elles sont transmises en tant que paramètre, séparant les entrées utilisateur de la syntaxe SQL.
Code révisé :
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()
Par à l'aide d'une requête paramétrée, tous les caractères ou métacaractères potentiellement malveillants dans l'entrée de l'étiquette sont automatiquement échappés, garantissant ainsi qu'ils sont interprétés comme du texte littéral plutôt que comme des commandes 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!