如何使用 pandas read_gbq 防止 SQL 注入
How to protect against SQL Injection with pandas read_gbq
我如何安全地使用 pandas_gbq.read_gbq 来防止 SQL 注入,因为我在文档中找不到参数化它的方法
我查看了有关参数化方法的文档以及 google 网站和其他来源。
df_valid = read_gbq(QUERY_INFO.format(variable), project_id='project-1622', location='EU')
查询看起来像 SELECT name, date FROM table WHERE id = '{0}'
我可以输入 p' or '1'='1 并且有效
根据 Google BigQuery docs,您必须使用具有 SQL
参数化语句的指定配置:
import pandas as pd
sql = "SELECT name, date FROM table WHERE id = @id"
query_config = {
'query': {
'parameterMode': 'NAMED',
'queryParameters': [
{
'name': 'id',
'parameterType': {'type': 'STRING'},
'parameterValue': {'value': 1}
}
]
}
}
df = pd.read_gbq(sql, project_id='project-1622', location='EU', configuration=query_config)
我如何安全地使用 pandas_gbq.read_gbq 来防止 SQL 注入,因为我在文档中找不到参数化它的方法
我查看了有关参数化方法的文档以及 google 网站和其他来源。
df_valid = read_gbq(QUERY_INFO.format(variable), project_id='project-1622', location='EU')
查询看起来像 SELECT name, date FROM table WHERE id = '{0}'
我可以输入 p' or '1'='1 并且有效
根据 Google BigQuery docs,您必须使用具有 SQL
参数化语句的指定配置:
import pandas as pd
sql = "SELECT name, date FROM table WHERE id = @id"
query_config = {
'query': {
'parameterMode': 'NAMED',
'queryParameters': [
{
'name': 'id',
'parameterType': {'type': 'STRING'},
'parameterValue': {'value': 1}
}
]
}
}
df = pd.read_gbq(sql, project_id='project-1622', location='EU', configuration=query_config)