#python #sql #postgresql #параметры
Каким образом можно экранировать SQL запрос, чтобы избежать SQL injection? def getStackArea(screen_area): db = postgresql.open(db_conf.connectionString()) data = db.query("select stack_area from screen_coordinates where screen_area = " + screen_area + " and active = 1") return data[0]['stack_area']
Ответы
Ответ 1
Пример: conn = psycopg2.connect(dsn) cur = conn.cursor() q = "select stack_area from screen_coordinates where screen_area = ? and active = ?" cur.execute(sql, (screen_area,1)) row = cur.fetchone() stack_area = row[0] или используя py-postgresql: q = "select stack_area from screen_coordinates where screen_area = $1 and active = $2" row = db.query.first(sql, (screen_area,1)) ... PS похоже параметризация в py-postgresql реализована не в полном объеме, как это описано в PEP-249
Комментариев нет:
Отправить комментарий