Что такое SQL-инъекция и как с ней бороться?

SQL-инъекция — это тип уязвимости, при которой злоумышленник вставляет вредоносный SQL-код в запросы к базе данных через пользовательский ввод.

Короткий ответ

Что ответить на собеседовании

SQL-инъекция — это тип уязвимости, при которой злоумышленник вставляет вредоносный SQL-код в запросы к базе данных через пользовательский ввод. Это может привести к несанкционированному доступу, изменению или удалению данных.

Подробный разбор

Ответ с пояснениями

SQL-инъекция — это тип уязвимости, при которой злоумышленник вставляет вредоносный SQL-код в запросы к базе данных через пользовательский ввод. Это может привести к несанкционированному доступу, изменению или удалению данных.

Для борьбы с SQL-инъекциями применяют следующие методы:

  • Использование параметризованных запросов (prepared statements) — параметры передаются отдельно от SQL-кода, что предотвращает выполнение вредоносного кода.
  • Валидация и фильтрация пользовательского ввода — проверка данных на соответствие ожидаемому формату.
  • Использование ORM — многие ORM автоматически защищают от SQL-инъекций.
  • Минимизация прав доступа к базе данных — ограничение прав пользователя базы данных, используемого приложением.

Пример на языке SQL с параметризованным запросом (например, на Python с библиотекой sqlite3):

cursor.execute("SELECT * FROM users WHERE username = ?", (username,))

Здесь username передается как параметр, что исключает возможность инъекции.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее