2017-06-21 4 views
0

Nous connaissons tous l'histoire de Bobby Tables et ne pas simplement utiliser une simple interpolation de chaîne avec des chaînes provenant d'utilisateurs. Mais ce que je me demande, c'est si c'est OK d'utiliser l'interpolation de chaîne de mes propres chaînes codées en dur. Par exemple, je ne vois pas comment c'est dangereux, mais je veux m'assurer. Et si c'est simplement la mauvaise façon de procéder pour une raison autre que la sécurité, j'aimerais aussi le savoir.Interpolation de chaîne dans une requête SQL: dangereuse et/ou incorrecte? (python)

table_dict = {'option1':'table_1','option2':'table_2'} 

query_string = "SELECT * FROM {}".format(table_dict[string_from_front_end]) 

Évidemment, cela est un exemple beaucoup plus simple que ce que je compte faire en fait - ma vraie question est beaucoup plus longue -, mais ma question est sur le point que l'interpolation de chaîne.

  1. Est-il sécuritaire?
  2. Y a-t-il une meilleure façon de le faire?
+0

Vous ne pouvez pas faire grand-chose d'autre que l'interpolation de chaîne avec des requêtes comme celle-ci. Les instructions préparées ne peuvent pas être utilisées pour spécifier dynamiquement les noms de tables/colonnes. – Phylogenesis

Répondre

1

Tant que la requête n'inclura jamais l'entrée de l'utilisateur, alors ça va.

Bien que je recommanderais d'utiliser un ORM si possible, car ils sont souvent écrits pour gérer l'interpolation de chaîne.