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 ?

Comment empêcher l'injection SQL lors de la mise à jour d'une base de données SQLite via JSON POST en Python ?

DDD
DDDoriginal
2025-01-04 21:35:41841parcourir

How to Prevent SQL Injection When Updating an SQLite Database via JSON POST in 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!

Déclaration:
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