python - postgres COPY tablename FROM STDIN with csv 是否存在 SQL 注入的风险?
问题描述
我正在使用 python 和 pyscopg2。
如果我在下面运行代码,用户提供的 csv 文件将被打开和读取。然后将包含在 csv 文件中的内容传输到数据库中。
我想知道当 csv 文件中包含一些意外的单词或符号时,代码是否存在 SQL 注入的风险。
conn_config = dict(port="5432", dbname="test", password="test")
with psycopg2.connection(**conn_config) as conn:
with conn.cursor() as cur:
with open("test.csv") as f:
cur.copy_expert(sql="COPY test FROM STDIN", file=f)
看了一些psycopg2和postgres的文档,没有找到结果。
请知道英语不是我的母语,我可能会犯一些令人困惑的错误
解决方案
该命令只是将数据复制到表中。复制数据的任何部分都不能被解释为 SQL 命令,因此 SQL 注入是不可能的。额外的安全性是严格的 CSV 格式。如果数据包含额外(冗余)写入,该命令将简单地失败。命令操作的唯一风险可能是表中的奇怪内容。
推荐阅读
- angular - 身份服务器连接授权几次失败
- python - 为什么我不能在函数内修改列表(作为一个整体)?
- java - GCP Cloud Run API(SDK) - 以编程方式创建服务
- mysql - 如何在 Golang 中处理 Bit(1) 类型
- elasticsearch - 如何在elasticsearch中更新字段的数据类型
- flutter - 如何从 Webflow 加载 Flutter Web 应用程序?
- python - 如何选择 texbox 并搜索内容并在 selenium - python 中选择第一个选项?
- solver - 如何使用 Python 解决以字符串格式给出的布尔表达式?
- bitbucket - Bitbucket Pipeline:我们可以在构建开始时获取参数值吗
- python-multiprocessing - python多处理突然只使用一个核心