我在读这个问题: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
函数中使用字符串插值?在
psycopg2
根本不使用服务器端准备的语句和绑定参数。它实际上通过字符串插值来执行所有查询,但它谨慎地遵守引用规则,并且以一种安全的方式这样做。在cursor.mogrify
只是一个手动调用,psycopg2
在将参数插入到自己的SQL字符串中时所使用的逻辑,然后将其发送到服务器。在这样做是安全的。只要确保你的代码有注释解释你为什么这么做,为什么它是安全的。在
但是,我个人建议避免这种方法,而使用它的^{} support 。在
相关问题 更多 >
编程相关推荐