Maison >développement back-end >Tutoriel Python >Comment utiliser en toute sécurité les listes dans les clauses MySQL IN pour empêcher l'injection SQL ?

Comment utiliser en toute sécurité les listes dans les clauses MySQL IN pour empêcher l'injection SQL ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-25 20:47:14951parcourir

How to Safely Use Lists in MySQL IN Clauses to Prevent SQL Injection?

Imploser en toute sécurité des listes pour les clauses MySQL IN

La sécurité de la base de données est primordiale et éviter l'injection SQL est crucial. Lorsque vous utilisez une liste de valeurs dans une clause MySQL IN, il est essentiel de le faire en toute sécurité.

Problème :

Développer une liste en une chaîne à utiliser dans un La clause IN est sensible à SQL injection.

# Vulnerable
cursor.execute("DELETE FROM foo.bar WHERE baz IN ('%s')" % foostring)

Solution :

Pour vous prémunir contre l'injection SQL, utilisez la liste de valeurs directement comme paramètres :

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

Ceci Cette approche transmet la liste des valeurs en tant que paramètres au lieu de les intégrer dans la chaîne de requête, empêchant ainsi les attaques par injection.

En transmettant directement les données au pilote MySQL. en tant que paramètres, vous éliminez le besoin de citations et d'échappements manuels, garantissant ainsi l'intégrité des opérations de votre base de données.

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