Maison >développement back-end >Tutoriel Python >Comment puis-je lier en toute sécurité des variables dans des instructions SQL à l'aide de Python ?

Comment puis-je lier en toute sécurité des variables dans des instructions SQL à l'aide de Python ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-31 05:14:09189parcourir

How Can I Safely Bind Variables in SQL Statements Using Python?

Liaison de variables dans les instructions SQL à l'aide de Python

En Python, il est essentiel de transmettre des variables dans des instructions SQL sans les inclure dans la requête chaîne. Cela empêche les attaques par injection SQL et garantit une gestion correcte des paramètres.

Pour y parvenir, utilisez la méthode curseur.execute() avec des espaces réservés (par exemple, %s pour les chaînes, %d pour les entiers et « %f » pour valeurs à virgule flottante) pour représenter les variables.

cursor.execute("INSERT INTO table VALUES (%s, %s, %s)", (var1, var2, var3))

Notez que les paramètres de la méthode execute() doivent être un tuple, même si vous transmettez une seule valeur. Pour indiquer un seul paramètre, utilisez un tuple avec une virgule finale :

cursor.execute("INSERT INTO table VALUES (%s)", (var1,))

L'API de la base de données gère l'échappement et la citation appropriés des variables. Évitez d'utiliser l'opérateur de formatage de chaîne (%) car il n'effectue aucun échappement ni citation, laissant l'application vulnérable aux attaques. De plus, il est important d'utiliser des instructions préparées (comme celle présentée ici) au lieu de concaténer des chaînes pour créer l'instruction SQL, car cela améliore à la fois la sécurité et les performances.

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