Страницы

Поиск по вопросам

суббота, 11 января 2020 г.

Как экранировать SQL запрос, чтобы избежать SQL injections?

#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

Комментариев нет:

Отправить комментарий