使用 Python 防止 BigQuery 中的 SQL 注入用于表名
python 202
原文标题 :Prevent SQL Injection in BigQuery with Python for table name
我有一个 Airflow DAG,它接受用户 fortable
的参数。
然后我在 SQL 语句中使用该值并在 BigQuery 中执行它。我担心自己暴露在 SQL 注入中。
这是代码:
sql = f"""
CREATE OR REPLACE TABLE {PROJECT}.{dataset}.{table} PARTITION BY DATE(start_time) as (
//OTHER CODE
)
"""
client = bigquery.Client()
query_job = client.query(sql)
dataset
和table
都通过气流通过,但我担心有人会通过:random_table; truncate other_tbl; --
作为table
参数。
我担心上面会创建一个名为random_table
的表,然后截断现有的表。
有没有更安全的方法来处理这些通过参数传递的?
我查看了 BigQuery 中的参数化查询,但这些查询不适用于表名。