Maison >base de données >tutoriel mysql >Comment puis-je exécuter en toute sécurité des requêtes MySQL en Python pour empêcher l'injection SQL ?

Comment puis-je exécuter en toute sécurité des requêtes MySQL en Python pour empêcher l'injection SQL ?

DDD
DDDoriginal
2024-12-13 14:21:10293parcourir

How Can I Securely Execute MySQL Queries in Python to Prevent SQL Injection?

Connectivité MySQL sécurisée et exécution des requêtes en Python

Dans le domaine des applications Web, garantir une gestion sécurisée des données est primordiale. Lorsque vous travaillez avec MySQL, une préoccupation courante est d'empêcher les attaques par injection SQL. Pour résoudre ce problème, il est essentiel d'employer les meilleures pratiques qui protègent votre base de données contre les manipulations malveillantes.

L'une de ces approches consiste à utiliser des instructions préparées avec des marqueurs de paramètres (« %s »). En utilisant cette méthode, vous pouvez insérer des variables dans les requêtes tout en préservant la sécurité. Voici comment :

  1. Préparez la requête : Créez une instruction préparée à l'aide de la méthode "execute" avec des marqueurs de paramètres à la place des variables. Par exemple :
cursor = db.cursor()
max_price = 5
statement = "SELECT spam, eggs, sausage FROM breakfast WHERE price < %s"
  1. Lier les variables : Au lieu de直接插入变量,使用列表或元组将变量传递给 "exécuter"方法的第二个参数。 Cela lie les variables à l'instruction préparée, garantissant qu'elles sont correctement échappées et nettoyées.
cursor.execute(statement, (max_price,))

Éviter la substitution directe :

Il est important d'éviter de remplacer directement des variables dans les requêtes en utilisant le formatage de chaîne, car cela peut conduire à aux vulnérabilités d’injection SQL. Au lieu de cela, utilisez strictement des marqueurs de paramètres et liez des variables à l'instruction préparée.

Par exemple, n'utilisez pas de substitution de chaîne comme :

cursor.execute("SELECT spam, eggs, sausage FROM breakfast WHERE price < %s" % (max_price,))

Considérations supplémentaires :

  • N'utilisez pas de guillemets simples autour du support du paramètre (« %s ») si le paramètre est une chaîne. Le pilote fournira un échappement approprié.
  • Utilisez des requêtes paramétrées de manière cohérente dans toute votre base de code pour garantir la sécurité dans toute l'application.

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