gpt4 book ai didi

python - psycopg2 : does cursor. mogrify 防止 sql 注入(inject)?

转载 作者:行者123 更新时间:2023-11-29 12:54:25 27 4
gpt4 key购买 nike

我正在阅读这个 SO 问题:psycopg2: insert multiple rows with one query我发现有一个很好的答案,它使用 cursor.mogrify 来加速一系列的 sql 插入。这让我想知道,cursor.mogrify 是否成功逃脱了所有 sql 注入(inject)漏洞?

Alex Riley 发布的答案代码如下:

args_str = ','.join(cur.mogrify("(%s,%s,%s,%s,%s,%s,%s,%s,%s)", x) for x in tup)
cur.execute("INSERT INTO table VALUES " + args_str)

有谁知道这种使用 psychopg2 的 cursor.mogrify 方法然后在 cursor.execute 函数中进行字符串插值的方法有任何漏洞,就像这样?

最佳答案

psycopg2 根本不使用服务器端准备好的语句和绑定(bind)参数。它实际上通过字符串插值执行所有查询,但它仔细遵守引用规则并以安全的方式执行。

cursor.mogrify 只是手动调用与 psycopg2 将参数插入 SQL 字符串本身时使用的完全相同的逻辑,然后再将其发送到服务器。

这样做是安全的。只需确保您的代码有注释来解释您为什么这样做以及为什么它是安全的。

但是,我个人建议避免使用这种方法,而使用它的 COPY support .

关于python - psycopg2 : does cursor. mogrify 防止 sql 注入(inject)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46800372/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com