2017-06-21 34 views
0

我们都知道Bobby Tables的故事,而不是仅仅使用来自用户的字符串的简单字符串插值。SQL查询中的字符串插值:危险和/或错误? (python)

但我想知道的是,是否可以从我自己的硬编码字符串中使用字符串插值。

例如,我看不出这是危险的,但我想确保。如果出于某种非安全原因,这只是错误的方式,我也想知道这一点。

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

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

显然,这是一个比我打算非常简单的示例来实际做的 - 我真正的查询是更长的时间 - ,但我的问题是关于字符串插值。

  1. 安全吗?
  2. 有没有更好的方法我应该这样做?
+0

除了使用像这样的查询进行字符串插值之外,您可以做的不多。 Prepared语句不能用于动态指定表/列名称。 – Phylogenesis

回答

1

只要查询永远不会包含用户输入,那就没问题。

虽然我会建议在可能的情况下使用ORM,因为它们通常被写为处理字符串插值。