【问题标题】:psychopg2: does cursor.mogrify prevent sql injection?psycopg2:cursor.mogrify 会阻止 sql 注入吗?
【发布时间】:2018-03-29 17:58:25
【问题描述】:

我正在阅读这个 SO 问题: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) 

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

【问题讨论】:

    标签: python sql postgresql


    【解决方案1】:

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

    这样做是安全的。只要确保你的代码有 cmets 解释你为什么这样做以及为什么它是安全的。

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

    【讨论】:

    • 我觉得这是可以接受的,但我非常感谢完整性检查,谢谢!
    猜你喜欢
    • 2018-09-14
    • 1970-01-01
    • 2022-10-20
    • 1970-01-01
    • 2021-03-21
    • 2013-05-05
    • 2011-12-27
    • 2017-12-21
    • 2017-11-06
    相关资源
    最近更新 更多