2017-06-21 52 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,因爲它們通常被寫爲處理字符串插值。