Postgresql查询的双撇号的替代方案?

时间:2020-04-21 20:58:22

标签: python postgresql psycopg2

在使用psycopg2将数据插入数据库之前,我注意到使用了许多pythonic替换函数。我知道这样做是为了防止用户创建格式错误的sql查询。

示例: insert into users (name) values ('Hello''World'); 它将在该列中存储:Hello'World

我的想法是,他们只是在插入之前才真正这样做,对此我感到不安。

示例:

    s = "Hello'World"
    q = "insert into users (name) values ('{}');".format(s.replace("'", "''"))
    cursor.execute(q)

对我来说感觉很不错。我的一部分想法是,我仍然可以用s来解决这种替换问题,因为这是唯一停止注入的方法。是的,arent正确使用了psycopg2,因为第二个参数是与数据库条目相关的值的列表或字典。

它应该说:

cursor.execute("insert into users (name) values (%s);", ["Hello'World"])

所以我试图在这里找到进行SQL注入的概念证明,因为我认为仅仅两次滴答就不够好了。

因为这是python,所以我在考虑选项,但是我不知道postgres是如何工作的,是否在字符串等中使用了某种预处理器。

有没有一种方法可以传递将被处理为s '的字符串,而无需替换触摸它?我正在研究尝试传递unicode之类的东西。看看我是否可以对unicode或chr进行处理以使其处理方式有所不同?

还有其他人遇到过吗?我坐在dbeaver以及psycopg2 / python中,看看我是否可以得到一个工作样本。

0 个答案:

没有答案