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

Почему параметризация защищает от SQL-инъекции

Вопрос

Почему параметризованный запрос защищает от SQL-инъекции?

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

Выберите вариант, и откроется разбор.

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

Коротко

Правильный ответ: Запрос и значения идут в базу раздельно, значение не разбирается как SQL. При подготовленном запросе СУБД сначала разбирает структуру запроса с плейсхолдерами, а значения подставляет как данные.

Варианты ответа

  1. Драйвер автоматически удаляет из значений кавычки и точки с запятой
  2. База шифрует параметры перед выполнением, и их нельзя прочитать как SQL
  3. Параметры проверяются регулярным выражением на опасные слова вроде DROP
  4. Запрос и значения идут в базу раздельно, значение не разбирается как SQLправильный ответ

Разбор

При подготовленном запросе СУБД сначала разбирает структуру запроса с плейсхолдерами, а значения подставляет как данные. Поэтому ' OR '1'='1 останется просто строкой. Удаление кавычек и чёрные списки слов это хрупкие фильтры, а шифрование тут ни при чём.

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

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