Ответ вслух Junior Инъекции: SQL, NoSQL, команды спрашивают часто обновлено

Объясните SQL-инъекцию разработчику

Вопрос

Объясните джуну, что такое SQL-инъекция, как её найти в коде и как исправить.

Попробуйте сами

Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.

Показать ответ и разбор

Коротко

Образцовый ответ: «Инъекция возникает, когда ты склеиваешь строку запроса с вводом: WHERE email = ' + email + '. Пользователь закрывает кавычку и дописывает свой SQL, например OR 1=1 или UNION SELECT с паролями.

Что должно прозвучать в ответе

  • Суть: ввод пользователя склеивается с текстом SQL и меняет структуру запроса

  • Последствия: чтение чужих данных, изменение, иногда выполнение команд

  • Защита: параметризованные запросы, ORM без сырых фрагментов

  • Идентификаторы и сортировка только через allowlist

  • Глубокая оборона: минимальные права БД, SAST, ревью

Что могут спросить следом

  • Почему экранирование кавычек хуже параметризации?
  • Как найти инъекции в большом старом коде?

Разбор

Образцовый ответ: «Инъекция возникает, когда ты склеиваешь строку запроса с вводом: WHERE email = ' + email + '. Пользователь закрывает кавычку и дописывает свой SQL, например OR 1=1 или UNION SELECT с паролями. Исправление: параметризованный запрос, где SQL и значения уходят в базу отдельно, и база не разбирает значение как код. В ORM пользуемся обычными методами, а в raw тоже плейсхолдеры. Имя колонки для сортировки параметром не передать, поэтому сверяем со списком разрешённых. И на всякий случай у приложения учётка без прав на DDL. Искать такие места помогает поиск по execute(f", + рядом с query и SAST в CI».

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.