Maison >développement back-end >Tutoriel Python >Comment insérer en toute sécurité des listes dans les clauses MySQL IN ?

Comment insérer en toute sécurité des listes dans les clauses MySQL IN ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-24 03:10:131085parcourir

How to Safely Insert Lists into MySQL IN Clauses?

Insérer des listes en toute sécurité dans les clauses MySQL IN

Cet article explore une méthode efficace et sécurisée pour insérer des listes dans les clauses IN des bases de données MySQL. Alors que l'approche traditionnelle consiste à mapper des listes sur des chaînes et à les insérer directement, cette méthode présente un risque d'injection SQL en raison de la nécessité de citer et d'échapper manuellement.

Pour éviter cette vulnérabilité, une approche plus sûre consiste à utiliser l'option list directement en tant que paramètre dans la requête MySQL. Le code suivant illustre cette méthode :

format_strings = ','.join(['%s'] * len(list_of_ids))
cursor.execute("DELETE FROM foo.bar WHERE baz IN (%s)" % format_strings,
                tuple(list_of_ids))

Ce code accomplit les tâches suivantes :

  • Évite les citations manuelles : En utilisant le spécificateur de format '%s' , les données de list_of_ids sont automatiquement transmises au pilote MySQL en tant que paramètre, éliminant ainsi le besoin d'une manipulation manuelle. citant.
  • Empêche l'injection SQL : Les données sont insérées en tant que paramètre, garantissant qu'elles ne sont pas interprétées comme faisant partie de la requête. Cela rend la requête immunisée contre les attaques par injection SQL.
  • Prend en charge tous les caractères : Les données peuvent contenir n'importe quel caractère sans nécessiter de suppression ou de citation.

Il est important de notez que cette méthode repose sur la capacité du pilote MySQL à gérer les paramètres en toute sécurité. Tant que les données sont transmises correctement en paramètre, la requête reste à l'abri de l'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!

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