python - 如何使用 pandas read_gbq 防止 SQL 注入
问题描述
我如何安全地使用 pandas_gbq.read_gbq 来防止 SQL 注入,因为我无法在文档中找到参数化它的方法
我查看了文档以参数化的方式以及谷歌网站和其他来源。
df_valid = read_gbq(QUERY_INFO.format(variable), project_id='project-1622', location='EU')
查询的样子SELECT name, date FROM table WHERE id = '{0}'
我可以输入 p' 或 '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)
推荐阅读
- python - 我正在尝试使用 imagezmq 和 opencv 制作视频聊天应用程序
- c - 将一个字节添加到 uint32 的第一个字节
- shareandcharge - npm install 后,ocn-tools 无法编译
- ios - 如何让 AnchorEntity.position 与触摸事件对齐
- javascript - MUI 自动完成功能不适用于 react-hook-form
- linux - 有效地将块插入文件中间
- r - Power BI - 创建自定义 r 视觉对象关系错误
- image-processing - 空间或频域的边缘检测?
- docker - Docker Swarm 工作节点未访问互联网
- java - graphics.drawString 可以在paintComponent 之外更改它的属性吗?