我的Python应用程序允许用户创建他们自己命名的模式。我需要一种保护应用程序免受SQL注入攻击的方法。
要执行的SQL语句如下:
有没有办法去除引号,或者我只是去掉模式名称中的非字母数字字符就行了?后者看起来有点丑,但应该仍然有效。
要执行的SQL语句如下:
CREATE SCHEMA schema_name AUTHORIZATION user_name;
Psycopg文档(通常)建议像这样传递参数以执行
conn = psycopg2.connect("dbname=test user=postgres")
cur = conn.cursor()
query = 'CREATE SCHEMA IF NOT EXISTS %s AUTHORIZATION %s;'
params = ('schema_name', 'user_name')
cur.execute(query, params)
但是这将导致一个带有单引号的查询失败:
CREATE SCHEMA 'schema_name' AUTHORIZATION 'user_name';
> fail
有没有办法去除引号,或者我只是去掉模式名称中的非字母数字字符就行了?后者看起来有点丑,但应该仍然有效。