sql инъекция в запросах
Получаю гет запросом логин и отправляю его в sql запрос
@app.route('/api/login' )
def login():
login = request.args.get("l")
with connect(host=host,user=user,password=pa,database=db) as connection:
select_movies_query = "SELECT * FROM user WHERE login = '" + login + "'"
with connection.cursor() as cursor:
cursor.execute(select_movies_query)
result = cursor.fetchall()
for row in result:
print(row)
При данной схеме возникает возможность sql инъекций. Подскажите, какие есть способы,что бы игнорировать ' в запросах
Ответы (1 шт):
Автор решения: MaxU
→ Ссылка
Используйте связываемые переменные - это обезопасит вас от SQL Injections:
select_movies_query = "SELECT * FROM user WHERE login = %s"
...
cursor.execute(select_movies_query, [login])
Функция cursor.execute(query, parameters) в качестве второго параметра ожидает кортеж или список значений, которые будут подставляться вместо %s в запросе. Подставление делается по порядку - вместо первого %s подставляется первый элемент из parameters и т.д.
NOTE: обратите внимание, что в запросе отсутствуют кавычки вокруг строкового литерала - БД драйвер сам позаботиться об этом.