SQL 查询中的字符串插值:危险 and/or 错误? (python)
string interpolation in SQL query: dangerous and/or wrong? (python)
我们都知道 Bobby Tables 的故事,而不只是对来自用户的字符串使用简单的字符串插值。
但我想知道是否可以从我自己的硬编码字符串中使用字符串插值。
例如,我看不出这有什么危险,但我想确定一下。如果出于某些非安全原因,这只是错误的方法,我也想知道。
table_dict = {'option1':'table_1','option2':'table_2'}
query_string = "SELECT * FROM {}".format(table_dict[string_from_front_end])
显然,这是一个比我实际打算做的要简单得多的示例——我的实际查询要长得多——但我的问题是关于字符串插值。
- 安全吗?
- 有更好的方法吗?
只要查询永远不会包含用户输入,就可以了。
尽管我建议尽可能使用 ORM,因为它们通常用于处理字符串插值。
我们都知道 Bobby Tables 的故事,而不只是对来自用户的字符串使用简单的字符串插值。
但我想知道是否可以从我自己的硬编码字符串中使用字符串插值。
例如,我看不出这有什么危险,但我想确定一下。如果出于某些非安全原因,这只是错误的方法,我也想知道。
table_dict = {'option1':'table_1','option2':'table_2'}
query_string = "SELECT * FROM {}".format(table_dict[string_from_front_end])
显然,这是一个比我实际打算做的要简单得多的示例——我的实际查询要长得多——但我的问题是关于字符串插值。
- 安全吗?
- 有更好的方法吗?
只要查询永远不会包含用户输入,就可以了。
尽管我建议尽可能使用 ORM,因为它们通常用于处理字符串插值。