Sobes.tech
Back to questions
Junior — Middle
76

Каким образом можно определить уязвимость SQL-инъекции в данном коде?

Companies where asked
ИнфоТехСервис

Answer from AI

sobes.tech AI

SQL-инъекция возникает, когда пользовательский ввод напрямую вставляется в SQL-запрос без должной обработки. Чтобы определить уязвимость в коде на Python, нужно проверить, формируется ли SQL-запрос с использованием конкатенации строк или форматирования с участием данных от пользователя.

Например, уязвимый код:

user_id = input("Введите ID пользователя: ")
query = f"SELECT * FROM users WHERE id = {user_id}"
cursor.execute(query)

Здесь, если пользователь введет что-то вроде 1 OR 1=1, запрос изменится и вернет все записи.

Безопасный подход — использовать параметризированные запросы:

user_id = input("Введите ID пользователя: ")
query = "SELECT * FROM users WHERE id = %s"
cursor.execute(query, (user_id,))

Таким образом, чтобы определить уязвимость, ищите места, где пользовательский ввод вставляется в SQL-запрос напрямую, без параметризации или экранирования.