@qwwwwwty

Почему не стоит использовать f строки в SQL Python запросах?

Почему не стоит использовать f строки в SQL Python запросах?
Например есть запрос:

connect = sqlite3.connect('INFO.db')
cursor = connect.cursor()

GLAV_USER = message.from_user.id
cursor.execute(f"SELECT ID FROM table WHERE MEMBER = '{GLAV_USER}'")


Объясните, пожалуйста, доступным языком. Спасибо!
  • Вопрос задан
  • 168 просмотров
Решения вопроса 1
ma4akk
@ma4akk
Использование f строки в SQL запросах может быть небезопасно, потому что оно позволяет вставлять значения переменных непосредственно в SQL запрос. Это может привести к SQL injection - атаке, когда злоумышленник вводит в запрос подозрительные данные, чтобы получить доступ к базе данных или внести в нее изменения.

Чтобы избежать этой проблемы, рекомендуется использовать параметризированные запросы. Это значит, что значения переменных не вставляются непосредственно в запрос, а передаются отдельно как параметры. В SQLite это можно сделать с помощью вопросительного знака (?) вместо значения переменной:

connect = sqlite3.connect('INFO.db')
cursor = connect.cursor()

GLAV_USER = message.from_user.id
cursor.execute("SELECT ID FROM table WHERE MEMBER = ?", (GLAV_USER,))


Такой подход более безопасен и предотвращает возможность SQL инъекцй.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы