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!