心理医生2:是的光标.mogrify阻止sql注入?

2024-09-11 00:42:22 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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) 

有人知道这种方法的漏洞吗?这种方法使用psycopg2的cursor.mogrify方法,然后在cursor.execute函数中使用字符串插值?在


Tags: 方法答案executesqlwithargsmultiplecursor
1条回答
网友
1楼 · 发布于 2024-09-11 00:42:22

psycopg2根本不使用服务器端准备的语句和绑定参数。它实际上通过字符串插值来执行所有查询,但它谨慎地遵守引用规则,并且以一种安全的方式这样做。在

cursor.mogrify只是一个手动调用,psycopg2在将参数插入到自己的SQL字符串中时所使用的逻辑,然后将其发送到服务器。在

这样做是安全的。只要确保你的代码有注释解释你为什么这么做,为什么它是安全的。在

但是,我个人建议避免这种方法,而使用它的^{} support。在

相关问题 更多 >